Reflex: Practical Functional Reactive Programming
Reflex is a fully-deterministic, higher-order Functional Reactive Programming (FRP) interface and an engine that efficiently implements that interface.
Why use Reflex
Share data types between frontend and server code; use generics to automatically derive JSON encoding-decoding; reuse code from server at client-side to implement complex business logic, and do prerendering at server-side using frontend code.
Fast to prototype; thanks to strong static typing, avoid frustrating runtime errors while doing modifications.
Haskell' advanced type-system and compile time checks help create easy to maintain apps.
Works on Web, Desktop, Android and iOS
Reuse and compose your widgets with confidence, thanks to excellent composability support of FRP architecture.
Widgets can handle their internal state, DOM creation, user interaction, and communication with backend. Their type signature clearly shows what inputs they need, and what output they can produce; which greatly simplifies the process of creating complex designs using simpler blocks.