我目前正在学习榆木。对函数式编程而言相对较新。我试图从http://elm-lang.org/learn/Using-Signals.elm了解计数鼠标单击次数的示例。他们提供以下代码:
clickCount =
foldp (\click count -> count + 1) 0 Mouse.clicks
他们解释说,foldp接受三个参数:一个计数器增量器,我们将其定义为具有两个输入的匿名函数,一个起始状态0,和Mouse.clicks信号。
我不明白为什么我们需要在匿名函数中单击变量。为什么我们不能只用\count-> count + 1?多余的输入是否绑定(bind)到foldp的输入之一?
谢谢!
最佳答案
您需要它,因为foldp
需要具有两个输入的函数。在这种情况下,lambda只会忽略第一个输入,但是foldp
实现仍然在其中放置了一些内容。 Mouse.clicks
总是在其中放置一种称为Unit
的空值。
一些信号具有与之关联的值,例如Mouse.position
。如果要执行类似测量鼠标移动距离的操作,则需要使用该参数。
关于functional-programming - 榆木:了解foldp和鼠标单击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30249106/