FRP.Functional Reactive Programming
●
Графический интерфейс (UI)
– Элементы выбора
– Действия с мышью (устройствами ввода)
●
Обновление коллекций
●
Анимация
Slide 7
Slide 7 text
FRP.Functional Reactive Programming
История
●
Conal Elliott 1997
●
Paul Hudak 2000
Slide 8
Slide 8 text
FRP.Functional Reactive Programming
Библиотеки в ЯП
Slide 9
Slide 9 text
●
Библиотеки в Haskell
– Reactive-Banana
– Arrows
– Yampa
– Reflex
FRP.Functional Reactive Programming
Slide 10
Slide 10 text
●
Reflex - cпецификация FRP и ее реализация
●
Образует платформу reflex-platform
– reflex
– reflex-dom
– reflex-contrib
FRP.Reflex
Slide 11
Slide 11 text
●
Практичный ФРП должен быть
выразительными, понятными и
эффективными
●
Практичный ФРП должен иметь
динамическое обновление потока данных
●
Практичный ФРП должен использовать
идеоматический Haskell
FRP.Reflex
Slide 12
Slide 12 text
●
Reflex 10 примитивов в одном Сlass
– 8 чистых
– 2 монадических
FRP.Reflex
Slide 13
Slide 13 text
Event t a
Behaviour t a
never :: Event t a
constant :: a -> Behavior t a
push :: (a -> PushM t (Maybe b)) -> Event t a -> Event t b
pull :: PullM t a -> Behavior t a
merge :: GCompare k => DMap (WrapArg (Event t) k) -> Event t (DMap k)
fan :: GCompare k => Event t (DMap k) -> EventSelector t k
select :: EventSelector t k -> k a -> Event t a
switch :: Behavior t (Event t a) -> Event t a
coincidence :: Event t (Event t a) -> Event t a
FRP.Reflex
Slide 14
Slide 14 text
Dynamic t a = Dynamic (Behavior t a) (Event t a)
комбинация поведения и события
FRP.Reflex
Slide 15
Slide 15 text
●
Reflex монада комбинация reader и write
●
Подписка событий
●
Подписка слушателей
FRP.Reflex
Slide 16
Slide 16 text
Reflex-Dom / GHCJS
Фронтэнд для работы с DOM (Html документами)
FRP.Reflex