Shower Presentation Engine
ghcjs
clay!
| Event |
|---|
| Behavior |
|---|
| Dynamic |
|---|
thanks to rxmarbles.com!
Event is a Functor -> fmap (const 5) clickEvt
… ⇒ [Event t a] → Event t a… ⇒ (a → a → a) → [Event t a] → Event t a
FunctorMaybe f => (a → Bool) → f a → f a
… ⇒ (a → b → b) → b → Event t a → m (Dynamic t b)(a → b → b) → b → [a] → b
… ⇒ Dynamic t a → Dynamic t a
EventsView.hs
RecursiveDo const :: a -> b -> aconst x _ = xfmap (const 6) [1,2,3,4] -> [6,6,6,6]fmap (\_ -> 6) [1,2,3,4] -> [6,6,6,6]
… ⇒ (a → b) → Dynamic t a → m (Dynamic t b)
… ⇒ Dynamic t a → (a → b) → m (Dynamic t b)
Config.hs
Note we bypassed the input API, and it's self-contained.
combineDyn :: … ⇒ (a → b → c) → Dynamic t a → Dynamic t b → m (Dynamic t c)
… ⇒ m (Event t ())… ⇒ String → Event t b → m (Dynamic t (RemoteData a))Config.hs
combineDyn -- we don't need $q.all and things like that.
… ⇒ a → Dynamic t a… ⇒ a → Event t a → m (Dynamic t a)Dynamic t (m (Event t Day)) and things like that are pretty commonrecursive do: the error could be anywhere in the rec block...ghcjs: shims -- builds then crashes at runtime! Had to patch the RTS.ghcjs: Running on 0.1, ~0.3 is dev..ghcjsi will help)My SPA GHCJS/Reflex app is 18MB (all in). That's a pretty hefty page load. (I wasn't successful with first run of closure-compiler either)
— Tim Dysinger (@dysinger) February 27, 2016
... and inline CSS...