Warum gibt 'Änderungen' 'Ereignis t (Zukunft a)' zurück?

8

Die changes Funktion hat den Typ Frameworks t => Behavior t a -> Moment t (Event t (Future a)) . Future ist abstrakt und es gibt nur eine Funktion, die es konsumiert ( reactimate' ).

Allerdings kann ich einfach die folgende Funktion schreiben:

%Vor%

um ein normales (nicht Future ) Ereignis zu erhalten.

Stimmt etwas nicht mit dieser Funktion? Wenn nicht, warum hat die ursprüngliche Funktion changes einen restriktiveren Typ?

    
Tobias Brandt 17.11.2014, 19:54
quelle

1 Antwort

4

Die Funktion changes liefert andere Werte als die von Ihnen beschriebene Funktion changes' . Der entscheidende Punkt ist der folgende:

Betrachten Sie ein Verhalten, das von stepper (oder accumB ) definiert wird und sich zur Zeit t0 ändert. Welchen Wert hat das Verhalten zu diesem Zeitpunkt? Die Antwort ist, dass das Verhalten den neuen Wert für alle Zeiten annimmt, die streng größer sind als der Zeitpunkt der Änderung, t & gt; t0 , und dass es zum Zeitpunkt t0 immer noch seinen alten Wert hat. Mit anderen Worten, die Funktion changes' gibt ein Ereignis zurück, dessen Werte die alten Werte des Verhaltens zum Zeitpunkt der Änderung sind. Im Gegensatz dazu gibt die Funktion changes die neuen ("zukünftigen") Werte zurück. Aus verschiedenen Gründen, die mit Rekursion zu tun haben, werden die neuen Werte in einen Future -Typ eingeschlossen, so dass dies nicht möglich ist Zugriff bis zur reactimate' -Phase.

EDIT: Tobias hat ein Bild zur Veranschaulichung gezeichnet:

    
Heinrich Apfelmus 18.11.2014, 14:13
quelle

Tags und Links