Я пытаюсь понять, как моделировать события в ClojureScript.Проектировать очередь событий в JavaScript легко.Вы просто сохраняете (изменяемый) массив функций и предоставляете вспомогательные функции для добавления или удаления обратных вызовов из массива.Когда вы инициируете событие, просто просмотрите все обратные вызовы, перечисленные в массиве, и вызывайте их один за другим.
Эта парадигма далека от функционального стиля - например, нет смысла запускать обратные вызовы, если они не имеютпобочные эффекты.Более того, он реализован с использованием изменяемого массива.Тем не менее мне кажется, что в ClojureScript нужно уметь программировать на основе событий, чтобы делать что-нибудь полезное.Теперь я знаю, что Google Closure уже реализует библиотеку событий, но мой вопрос заключается в ее естественном внедрении.
Поскольку все основные типы данных Clojure / ClojureScript являются неизменяемыми, какой будет идиоматический способ реализации этого механизма?Изменение ссылки?Прибегать к изменяемым структурам данных с хоста (Java или JavaScript)?
Если я правильно понимаю, агенты, возможно, являются правильным инструментом в Clojure, но я вижу, что в настоящее время они не реализованы в ClojureScript.