榆树:理解foldp和鼠标点击

时间:2015-05-14 23:25:45

标签: functional-programming elm

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

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

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

我不明白为什么我们需要在匿名函数中进行变量点击。为什么我们只能拥有\ count - >数+ 1?额外输入是否与我们输入foldp的输入绑定?

谢谢!

1 个答案:

答案 0 :(得分:5)

您需要它,因为foldp期望具有两个输入的函数。在这种情况下,lambda会忽略第一个输入,但foldp实现仍会在其中放置一些内容。 Mouse.clicks始终会在其中放置一种名为Unit的无用值。

某些信号具有与之关联的值,例如Mouse.position。如果您想要测量鼠标移动的距离,则需要使用该参数。