【发布时间】:2015-07-27 05:01:01
【问题描述】:
我每时每刻都在读取按钮的状态(无论是否按下):
readButton :: IO Boolean
readButton = ...
main = do
(add, fire) <- newAddHandler
network <- compile (desc add)
actuate network
forever $ do
buttonState <- readButton
fire buttonState
desc addButtonEvent = do
eButtonState <- fromAddHandler addButtonEvent
...
所有读取状态都存储在网络描述desc中的eButtonState中。
当当前时刻的状态为1,前一时刻的状态为0时,该按钮被认为是新按下的。所以,如果事件序列是一个列表,那么函数应该是这样写的:
f :: [Bool] -> Bool
f (True:False:_) = True
f _ = False
我想将此功能应用于eButtonState,这样我就可以知道该按钮是否是新按下的。
有可能吗?你会怎么做?如果有更好或更常见的想法或方法来实现这一目标,我将不胜感激。
【问题讨论】:
标签: haskell frp reactive-banana