Estoy aprendiendo Haskell y Yampa por el momento y tengo una pregunta acerca de la función de reactivación.Diferencia de tiempo en la función de recíproco (sentido) en Yampa
reactimate :: IO a -- init
-> (Bool -> IO (DTime, Maybe a)) -- sense
-> (Bool -> b -> IO Bool) -- actuate
-> SF a b -- signal function
-> IO()
Como se puede ver en la firma de tipo, parte de la salida para la función de detección es la diferencia de tiempo entre la llamada actual y anterior de la función. En los ejemplos que he visto, esta diferencia horaria se calcula "manualmente" dentro de sense, usando un IORef para mantener el valor de la llamada anterior.
Parece raro que tenga que hacer un seguimiento de la diferencia de tiempo usando un estado externo, ¿por qué no se hace este cálculo en la función de reactivación? ¿Es un IORef una buena manera de manejarlo?