Elm:了解 foldp 和鼠标点击

Elm: understanding foldp and mouse-clicks

我目前正在学习 Elm。函数式编程相对较新。我试图从 http://elm-lang.org/learn/Using-Signals.elm 中理解这个关于计算鼠标点击次数的例子。他们提供以下代码:

clickCount =
    foldp (\click count -> count + 1) 0 Mouse.clicks 

他们解释说 foldp 接受三个参数:一个计数器增量器,我们将其定义为一个具有两个输入的匿名函数、一个起始状态 0 和 Mouse.clicks 信号。

我不明白为什么我们需要在匿名函数中使用变量 click。为什么我们不能只使用 \count -> count + 1?额外的输入是否绑定到我们对 foldp 的输入之一?

谢谢!

您需要它,因为 foldp 需要一个具有两个输入的函数。在这种情况下,第一个输入只是被您的 lambda 忽略,但是 foldp 实现仍然在其中放置了一些东西。 Mouse.clicks 总是在其中放置一种名为 Unit 的无用值。

有些信号有一个与之关联的值,例如 Mouse.position。如果您想执行诸如测量鼠标移动了多远之类的操作,则需要使用该参数。