我一直在研究函数响应式编程,尽管我没有在任何语言中广泛使用过单子,但我不禁发现它们在FRP设计中随处可见。
这个问题的回答中有一些关于函数响应式编程的绝妙描述,我不会在这里尝试复制那些内容。基本上,FRP创建了随时间变化的值之间的关系。
那么这不能用单子来表示吗?将需要修改的值的代码封装在一个单子中,称之为Signal
,然后像这样使用这些信号(使用Haskell do-notation以简化)。
do
mx <- mouseX
my <- mouseY
wave <- currentTime >>= liftM sin
-- do some stuff with these values
FRP是否还有我没有理解的东西?是否有范式阻止使用像单子这样简单的表示形式?或者这是FRP工作方式的一个有效(如果可能有些简化)理解?