Я все еще пытаюсь обернуть голову вокруг Haskell и FRP. В частности, я работал с некоторыми примерами, используя реактивно-банановый пакет и начинающий получать FRP.Haskell Reactive-Banana FRP и цикл событий
Однако я все еще не понимаю, как сеть событий знает, когда произошло событие ввода. Я понимаю, что в отличие от NodeJS, в которой цикл событий постоянно проверяется на вход пользователя, FRP использует другую структуру для «ожидания» или «проверки» пользовательских входов или внешних сигналов.
Из моего чтения FRP делает время явным. Сопоставляя время с событием или поведением, сеть всегда знает, когда срабатывает внешний стимул.
Я прочитал много работ Конала, Худака и др. и объяснения слишком технические. Просьба предоставить меньше технических объяснений.
Благодарим за помощь.
Я думаю, что просто просто * обманывать * тех, кто их использует, используя * настоящее слово IO stuff * - например [this] (https://hackage.haskell.org/package/reactive-banana-sdl-0.2.0/ docs/src/Reactive-Banana-SDL.html # runSDLPump) использует таймеры SDL для накачки вовремя - из того, что, как я понимаю, вы используете похожие вещи (ваш обычный материал с обязательным/асинхронным/основанным на событии «IO'), чтобы построить свою основу (см. [здесь] (https://hackage.haskell.org/package/reactive-banana-1.1.0.1/docs/Reactive-Banana-Frameworks.html)) – Carsten
Я написал несколько примеров подключения FRP-библиотек к реальный мир. [Пример подключения реактивного банана к GLUT] (http://stackoverflow.com/questions/15129677/simpler-alternative-libs-to-reactive-haskell/26112094#26112094) демонстрирует стрельбу из _real world IO stuff_. [Пример подключения реактивного банана к блеску] (http://stackoverflow.com/a/20677522/414413) демонстрирует события шага в явном цикле событий, но с помощью обхода через IO для использования существующей поддержки в 'Reactive.Banana .Frameworks'. – Cirdec