在反应香蕉,我试图运行reactimate :: Event (IO ()) -> Moment ()
与一些动作Arduino
在hArduino包,的一个实例MonadIO
.Arduino a -> IO a
包中似乎没有提供任何功能.你将如何执行Arduino
行动reactimate
?
理想情况下,我希望有一个Behaviour
我可以"轮询"以获得当前时间.但是,Behaviour
用Event
s(通过<@
等)进行轮询给出Behaviour
了前一个 Event
值,而不是当前值.(我意识到这是为了避免确实有用的循环定义.)
我发现fromPoll
我认为会有所帮助. Behaviour
这是从观察到的小号fromPoll
不能依靠自己,因此没有周期可以通过观察行为出台之前这个Event
被解雇,而不是刚过以前Event
解雇.
在某些更正式的术语中,我建议Event
s总是在时间t +发生,并且Behaviours
总是在时间t观察到-即Event
观察在它们之前无限短时间内发生的行为.新价值Behaviour
的生成S- accumB
和朋友们总是准时开始T +所以无法通过观察Event
S的也发生在时间T +.
在这个建议的语义下Behaviour
,fromPoll
将在每个Event
处理之前更新.其他Behaviour
s将在之后更新,因为它们是由accumB
朋友创建的.
无论如何,这对我的主要问题来说是一个重要的题外话.我想知道是否有某种方式来处理当前时间(而不是时间以前 Event
在反应香蕉).例如,我的用例是跟踪实体发送的ping,以及它们中的任何一个是否在特定时间间隔内没有发送ping来发出警告事件.
当然,我可以并且会非常频繁地发射事件,所以我的警告不会大量错误.然而,它似乎是一个瑕疵,他们不能准确.
处理这个问题的正确方法是什么?