问题标签 [combinators]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3079 浏览

haskell - Data.MemoCombinators 是如何工作的?

我一直在寻找Data.MemoCombinators的来源,但我真的看不出它的核心在哪里。

请向我解释所有这些组合器背后的逻辑以及它们如何实际工作以在现实世界编程中加速您的程序的机制。

我正在寻找实现的细节,并可选择与其他 Haskell 记忆方法进行比较/对比。我了解什么是记忆化,而不是在寻找关于它一般如何工作的描述。

0 投票
1 回答
216 浏览

haskell - 设计一元类型

我需要一些帮助来设计一元数据类型,我似乎很难理解这个想法,但我非常清楚我想要什么。只有类型检查器似乎需要一些说服力。

我想要的是一些Primitive可以是单子的数据类型。其功能基本上是绘制原语,我希望能够将它们组合起来,并且组合也是原语,就像Parser库中的类型一样parsec。但是实际的绘图必须用一个IO单子来完成。

顺便说一句,我也有一堂Drawable a这样的课:

我当然希望每个 Primitive 都是可绘制的。感谢您的任何意见。

0 投票
2 回答
12920 浏览

haskell - haskell中的并行映射

是否有一些替代品map可以并行评估列表?我不需要它懒惰。

类似于:pmap :: (a -> b) -> [a] -> [b]让我pmap expensive_function big_list拥有 100% 的核心。

0 投票
7 回答
65291 浏览

haskell - 在 Haskell 中为布尔函数执行“和”和“或”

我只是写了以下两个函数:

它们可用于组合两个布尔函数的值,例如:

在看了这两个函数之后,我意识到它们非常有用。如此之多,以至于我现在怀疑它们要么包含在标准库中,要么更有可能是使用现有函数进行此操作的干净方法。

这样做的“正确”方法是什么?

0 投票
1 回答
599 浏览

haskell - 如何在实际实践中使用 groupBy 和 zip?

1.对于

我想在将头部转换为整数后将头部添加回尾部结果应该是[[1,"x^3"],[2,"x^2"],[1,"x^2"]]

我可以

但上面不能,我注意到有一个区别是,这是(),不是[]

2.如何写groupBy在一个列表上,我已经通过了distinct elements forgroupBy 分组后,是为了添加他们的头部

:1:10: 无法匹配预期类型a0 -> a0 -> Bool' with actual type[a1]' 在nub' In the first argument ofgroupBy' 的调用的返回类型中,即 `(nub (map tail q))' 在表达式中:groupBy (nub (map tail q)) q

q 就像一个哈希表,似乎不能按第二个元素分组

0 投票
14 回答
6094 浏览

function - 高阶函数有哪些有趣的用途?

我目前正在上一门函数式编程课程,我对高阶函数和作为一等公民的函数的概念感到非常有趣。然而,我还想不出许多实际有用的、概念上令人惊叹的,或者只是简单有趣的高阶函数。(除了典型且相当乏味map的 ,filter等功能)。

你知道这些有趣功能的例子吗?

也许返回函数的函数,返回函数列表的函数(?)等。

我很欣赏 Haskell 中的示例,这是我目前正在学习的语言 :)

0 投票
1 回答
2415 浏览

haskell - Haskell:一些和很多

some有什么manyControl.Applicative.Alternative?如果我写类似的东西some $ Just 42,它似乎会导致无限递归,这似乎不是很有用......

0 投票
4 回答
8955 浏览

haskell - Haskell中的liftM和mapM有什么区别

函数 liftM 和 mapM 有什么区别?

0 投票
2 回答
609 浏览

c++ - 内存问题;复制错误的块和多次

终端输出:

我期待一个输出

p>

0 投票
1 回答
178 浏览

haskell - 用于组合破坏性运算符的更好接口,第二部分

有关正在发生的事情的解释,请参阅我之前关于编写 opencv 运算符的问题。

我想出了一个新的接口,它允许以一种可组合的方式组合破坏性的二进制操作:

有了这个,我可以很容易地表达“减去高斯算子”:

对我来说,这似乎是一个非常安全的选择,尽管它在某种意义上并不是最佳的,如果减法后的某些操作需要它,它可能也可以重新使用克隆的图像。但它似乎仍然是完全纯且未优化的版本的可接受替代方案:

问题

  1. 这首先是一个合理的结构吗?
  2. 是否有理由更喜欢上一个问题中的结构?
  3. 你将如何扩展它来实现一个操作“找到图像中的最小值,从图像中减去它,然后将图像乘以它的范围(即 max-min)。”
  4. 我应该把这些分成多个问题吗?