我每时每刻都在阅读按钮的状态(无论是否按下):
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
...
所有读取状态都存储eButtonState
在网络描述中desc
。
当前时刻的状态1
与前一时刻的状态相同时,该按钮被认为是新按下的0
。因此,如果事件序列是一个列表,则函数将这样编写:
f :: [Bool] -> Bool
f (True:False:_) = True
f _ = False
我想应用这个功能,eButtonState
所以我会知道按钮是否是新按下的。
有可能吗?你会怎么做?如果有更好或更常见的想法或方法来实现这一目标,我将不胜感激。