Ho setacciato la documentazione di reactive-banana e non riesco a trovare un modo per specificare ritardi temporali espliciti. Ad esempio, vorrei prendere uno Event t a
e spostare tutte le sue occorrenze 1 secondo nel futuro; oppure ottieni un evento che spara 1 secondo da adesso (entro Moment t
); o qualcosa del genere. I ritardi espliciti sono rappresentabili nella banana reattiva? In caso contrario, in che modo gli utenti implementano, ad es., L'eco dell'ingresso ritardato di un secondo?ritardi di banana reattiva
risposta
Come Ben indica, questo è corretto: la banana reattiva non è una nozione incorporata di tempo e ritardi.
Il motivo principale è che è difficile garantire che il tempo logico e il tempo reale siano d'accordo. Cosa succede quando un clic del mouse avviene in tempo reale prima del tempo logico di un evento che non è ancora stato calcolato, vale a dire il cui inganno in tempo reale dietro il suo tempo logico?
Tuttavia, è ancora possibile gestire il tempo utilizzando eventi timer esterni. Dai un'occhiata all'esempio Wave.hs.
Non sono un esperto in alcun modo, ma ho usato una banana reattiva più vecchia per un programma con esattamente questo bisogno (non ho il codice in mano al momento, sfortunatamente).
Io penso che i ritardi espliciti non si adattano naturalmente super-all'interno quadro reattivo-banane perché sei sempre implicitamente che fare con una sorta di tempo astratto. Ritardare a intervalli regolari richiede di affrontare la nozione di tempo del mondo reale. Posso vedere che sarebbe molto difficile dire cosa significhi union event (delay 1.0 event)
nel senso del modello autorevole dove type Event a = [Maybe a]
: dovrebbe essere [a, b, a, b]
o [a, a, b, b]
? Come ho pensato, il problema è che quale di questi due risultati dovrebbe essere non specificato senza considerare i dettagli operativi di runtime.
Ma puoi farlo "attorno" alla struttura della banana reattiva collegando un'azione IO all'evento che vuoi ritardare che dorme per un po '(non nel thread principale, ovviamente) e poi lancia un evento diverso . Credo di essere riuscito a racchiudere tutta quella logica in una funzione che potrei chiamare dal monad NetworkDescription
(questo era prima che esistesse il monad Moment
) per ottenere il mio nuovo evento ritardato.
- 1. Tabella reattiva con banana reattiva e gtk2hs
- 2. Push-pull in banana reattiva
- 3. eventi di limitazione della banana reattiva
- 4. Esiste un gtk a banana reattiva?
- 5. Come implementare un loop di gioco in banana reattiva?
- 6. Facendo qualche calcolo di base utilizzando reattiva Banana
- 7. Come si rimuovono gli eventi ripetuti nella banana reattiva
- 8. ricerca di `appiattire :: Evento [a] -> a` Evento in reattiva Banana
- 9. Perché non ci sono funzioni per la creazione di eventi da non-eventi in banana reattiva?
- 10. In banana reattiva, è sicuro attivare azioni del gestore da più thread?
- 11. compiti concatenamento con ritardi
- 12. Ritardi nell'animazione (TranslateAnimation)
- 13. Logica reattiva basata su logica reattiva lucida
- 14. Parametri di funzione reattiva
- 15. XCode 6.0.1 Comportamento: ritardi enormi?
- 16. Ritardi tra richieste in wget
- 17. Immagine di sfondo reattiva Bootstrap
- 18. reactive-banana: come creare un AddHandler?
- 19. Come riavviare Celery senza ritardi delle attività
- 20. Distribuzione probabilità per ritardi risposta sms
- 21. Immagine circolare reattiva
- 22. Programmazione reattiva con Javascript
- 23. Indicatori sulla mappa reattiva
- 24. estensione reattiva OnNext
- 25. Completamento automatico di Google - immensa velocità, senza ritardi
- 26. Come funziona la funzione mapAccum di Reactive Banana?
- 27. Creazione di cerchi css in nativa reattiva
- 28. Email e-mail reattiva: outlook
- 29. Programmazione reattiva funzionale in Scala
- 30. pymongo + gevent: mi butti una banana e solo monkey_patch?