我目前正在学习榆树。函数式编程相对较新。我试图从http://elm-lang.org/learn/Using-Signals.elm了解鼠标点击计数的这个例子。他们提供以下代码:
clickCount =
foldp (\click count -> count + 1) 0 Mouse.clicks
他们解释说foldp有三个参数:一个反向增量器,我们定义为一个带有两个输入的匿名函数,一个起始状态0和一个Mouse.clicks信号。
我不明白为什么我们需要在匿名函数中进行变量点击。为什么我们只能拥有\ count - >数+ 1?额外输入是否与我们输入foldp的输入绑定?
谢谢!
答案 0 :(得分:5)
您需要它,因为foldp
期望具有两个输入的函数。在这种情况下,lambda会忽略第一个输入,但foldp
实现仍会在其中放置一些内容。 Mouse.clicks
始终会在其中放置一种名为Unit
的无用值。
某些信号具有与之关联的值,例如Mouse.position
。如果您想要测量鼠标移动的距离,则需要使用该参数。