3Synopsis: Higher-order Functional Reactive Programming
5 Interactive programs without callbacks or side-effects.
6 Functional Reactive Programming (FRP) uses composable events and time-varying
7 values to describe interactive systems as pure functions.
8 Just like other pure functional code, functional reactive code is easier
9 to get right on the first try, maintain, and reuse.
11 Reflex is a fully-deterministic, higher-order Functional Reactive Programming
12 interface and an engine that efficiently implements that interface.
14 <https://reflex-frp.org>
18Maintainer: ryan.trinkle@gmail.com
19Stability: Experimental
23homepage: https://reflex-frp.org
24bug-reports: https://github.com/reflex-frp/reflex/issues
31 GHC ==8.4.4 || ==8.6.5 || ==8.8.1 || ==8.10.2,
34flag use-reflex-optimizer
35 description: Use the GHC plugin Reflex.Optimizer on some of the modules in the package. This is still experimental.
39flag use-template-haskell
40 description: Use template haskell to generate lenses
44flag debug-trace-events
45 description: Add instrumentation that outputs the stack trace of the definition of an event whenever it is subscribed to. Warning: It is very slow!
50 description: Use the primitive implementation of FastWeak in GHCJS; note that this requires GHCJS to be built with FastWeak and FastWeakBag present in the RTS, which is not the default
55 description: Enable debugging of spider internals
60 description: Enable debugging of event cycles
65 description: Use split these/semialign packages
70 default-language: Haskell2010
74 base >= 4.11 && < 4.15,
75 bifunctors >= 5.2 && < 5.6,
76 comonad >= 5.0.4 && < 5.1,
77 constraints >= 0.10 && <0.14,
78 constraints-extras >= 0.3 && < 0.4,
79 containers >= 0.6 && < 0.7,
80 data-default >= 0.5 && < 0.8,
81 dependent-map >= 0.3 && < 0.5,
82 exception-transformers == 0.4.*,
84 mmorph >= 1.0 && < 1.2,
85 monad-control >= 1.0.1 && < 1.1,
87 patch >= 0.0.1 && < 0.1,
88 prim-uniq >= 0.1.0.1 && < 0.3,
89 primitive >= 0.5 && < 0.8,
90 profunctors >= 5.3 && < 5.7,
94 semigroupoids >= 4.0 && < 6,
97 time >= 1.4 && < 1.10,
98 transformers >= 0.5.6.0 && < 0.6,
99 unbounded-delays >= 0.1.0.0 && < 0.2,
100 witherable >= 0.3 && < 0.4
103 build-depends: these >= 1 && <1.2,
104 semialign >=1 && <1.2,
105 monoidal-containers >= 0.6 && < 0.7
107 build-depends: these >= 0.4 && <0.9,
108 monoidal-containers == 0.4.0.0
111 Control.Monad.ReaderIO
113 Data.FastMutableIntMap,
119 Reflex.Adjustable.Class,
120 Reflex.BehaviorWriter.Base,
121 Reflex.BehaviorWriter.Class,
125 Reflex.DynamicWriter,
126 Reflex.DynamicWriter.Base,
127 Reflex.DynamicWriter.Class,
129 Reflex.EventWriter.Base,
130 Reflex.EventWriter.Class,
134 Reflex.Host.Headless,
136 Reflex.NotReady.Class,
137 Reflex.PerformEvent.Base,
138 Reflex.PerformEvent.Class,
139 Reflex.PostBuild.Base,
140 Reflex.PostBuild.Class,
145 Reflex.Requester.Base,
146 Reflex.Requester.Class,
148 Reflex.Spider.Internal,
150 Reflex.TriggerEvent.Base,
151 Reflex.TriggerEvent.Class,
156 patch:Data.Functor.Misc,
157 patch:Data.Patch as Reflex.Patch,
158 patch:Data.Patch.Class as Reflex.Patch.Class,
159 patch:Data.Patch.DMap as Reflex.Patch.DMap,
160 patch:Data.Patch.DMapWithMove as Reflex.Patch.DMapWithMove,
161 patch:Data.Patch.IntMap as Reflex.Patch.IntMap,
162 patch:Data.Patch.Map as Reflex.Patch.Map,
163 patch:Data.Patch.MapWithMove as Reflex.Patch.MapWithMove
165 ghc-options: -Wall -fwarn-redundant-constraints -fwarn-tabs -funbox-strict-fields -O2 -fspecialise-aggressively
167 if flag(debug-trace-events)
168 cpp-options: -DDEBUG_TRACE_EVENTS
170 bytestring >= 0.10.8 && < 0.11
172 if flag(use-reflex-optimizer)
173 cpp-options: -DUSE_REFLEX_OPTIMIZER
175 exposed-modules: Reflex.Optimizer
177 if flag(debug-propagation)
178 cpp-options: -DDEBUG -DDEBUG_TRACE_PROPAGATION -DDEBUG_TRACE_INVALIDATION
180 if flag(debug-cycles)
181 cpp-options: -DDEBUG_CYCLES
183 if flag(use-template-haskell)
184 cpp-options: -DUSE_TEMPLATE_HASKELL
186 dependent-sum >= 0.6 && < 0.8,
187 haskell-src-exts >= 1.16 && < 1.24,
188 haskell-src-meta >= 0.6 && < 0.9,
189 template-haskell >= 2.9 && < 2.17
192 other-extensions: TemplateHaskell
195 dependent-sum >= 0.6 && < 0.8
197 if flag(fast-weak) && impl(ghcjs)
198 cpp-options: -DGHCJS_FAST_WEAK
205 default-language: Haskell2010
206 type: exitcode-stdio-1.0
207 main-is: semantics.hs
209 ghc-options: -O2 -Wall -rtsopts
231 default-language: Haskell2010
232 type: exitcode-stdio-1.0
233 main-is: Reflex/Test/CrossImpl.hs
235 ghc-options: -O2 -Wall -rtsopts
253 default-language: Haskell2010
254 type: exitcode-stdio-1.0
262 build-depends: hlint >= 3 && < 4
264 build-depends: hlint (< 2.1 || >= 2.2.2) && < 4
268test-suite EventWriterT
269 default-language: Haskell2010
270 type: exitcode-stdio-1.0
271 main-is: EventWriterT.hs
286 build-depends: these-lens
292test-suite DebugCycles
293 default-language: Haskell2010
294 type: exitcode-stdio-1.0
295 main-is: DebugCycles.hs
297 ghc-options: -threaded
315 build-depends: these-lens, semialign
322 default-language: Haskell2010
323 type: exitcode-stdio-1.0
324 main-is: RequesterT.hs
342 build-depends: these-lens
350 default-language: Haskell2010
351 type: exitcode-stdio-1.0
358 default-language: Haskell2010
359 type: exitcode-stdio-1.0
360 main-is: Adjustable.hs
373 default-language: Haskell2010
374 type: exitcode-stdio-1.0
383 , monoidal-containers
392 build-depends: semialign, these-lens
400test-suite GC-Semantics
401 default-language: Haskell2010
402 type: exitcode-stdio-1.0
418 build-depends: semialign
426test-suite rootCleanup
427 default-language: Haskell2010
428 type: exitcode-stdio-1.0
429 main-is: rootCleanup.hs
444benchmark spider-bench
445 default-language: Haskell2010
446 type: exitcode-stdio-1.0
447 hs-source-dirs: bench test
449 ghc-options: -Wall -O2 -rtsopts
469benchmark saulzar-bench
470 default-language: Haskell2010
471 type: exitcode-stdio-1.0
472 hs-source-dirs: bench test
473 c-sources: bench-cbits/checkCapability.c
475 ghc-options: -Wall -O2 -rtsopts -threaded
498source-repository head
500 location: https://github.com/reflex-frp/reflex
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list