Ich lerne Haskell und Yampa im Moment und habe eine Frage über die Reaktivierungsfunktion.Zeitunterschied in der Reaktiv (Sinn) Funktion in Yampa
reactimate :: IO a -- init
-> (Bool -> IO (DTime, Maybe a)) -- sense
-> (Bool -> b -> IO Bool) -- actuate
-> SF a b -- signal function
-> IO()
Wie Sie in der Art Unterschrift, einen Teil der Ausgabe für die Lesefunktion ist die Zeitdifferenz zwischen dem aktuellen und den vorherigen Aufruf der Funktion zu sehen. In den Beispielen, die ich gesehen habe, wird diese Zeitdifferenz innerhalb von sense "manuell" berechnet, wobei ein IORef verwendet wird, um den Wert des vorherigen Anrufs beizubehalten.
Es scheint seltsam, dass Sie den Zeitunterschied mit einem externen Zustand verfolgen müssen, warum wird diese Berechnung nicht in der Reaktivierungsfunktion durchgeführt? Ist ein IORef ein guter Weg, damit umzugehen?