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.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1,
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.9 && < 4.14,
75 bifunctors >= 5.2 && < 5.6,
76 comonad >= 5.0.4 && < 5.1,
77 constraints-extras >= 0.3 && < 0.4,
78 containers >= 0.6 && < 0.7,
79 data-default >= 0.5 && < 0.8,
80 dependent-map >= 0.3 && < 0.5,
81 exception-transformers == 0.4.*,
83 mmorph >= 1.0 && < 1.2,
84 monad-control >= 1.0.1 && < 1.1,
86 patch >= 0.0.1 && < 0.1,
87 prim-uniq >= 0.1.0.1 && < 0.3,
88 primitive >= 0.5 && < 0.8,
89 profunctors >= 5.3 && < 5.6,
93 semigroupoids >= 4.0 && < 6,
96 time >= 1.4 && < 1.10,
97 transformers >= 0.5.6.0 && < 0.6,
98 unbounded-delays >= 0.1.0.0 && < 0.2,
99 witherable >= 0.3 && < 0.4
102 build-depends: these >= 1 && <1.2,
103 semialign >=1 && <1.2,
104 monoidal-containers >= 0.6 && < 0.7
106 build-depends: these >= 0.4 && <0.9,
107 monoidal-containers == 0.4.0.0
110 Control.Monad.ReaderIO
112 Data.FastMutableIntMap,
118 Reflex.Adjustable.Class,
119 Reflex.BehaviorWriter.Base,
120 Reflex.BehaviorWriter.Class,
124 Reflex.DynamicWriter,
125 Reflex.DynamicWriter.Base,
126 Reflex.DynamicWriter.Class,
128 Reflex.EventWriter.Base,
129 Reflex.EventWriter.Class,
133 Reflex.Host.Headless,
135 Reflex.NotReady.Class,
136 Reflex.PerformEvent.Base,
137 Reflex.PerformEvent.Class,
138 Reflex.PostBuild.Base,
139 Reflex.PostBuild.Class,
144 Reflex.Requester.Base,
145 Reflex.Requester.Class,
147 Reflex.Spider.Internal,
149 Reflex.TriggerEvent.Base,
150 Reflex.TriggerEvent.Class,
155 patch:Data.Functor.Misc,
156 patch:Data.Patch as Reflex.Patch,
157 patch:Data.Patch.Class as Reflex.Patch.Class,
158 patch:Data.Patch.DMap as Reflex.Patch.DMap,
159 patch:Data.Patch.DMapWithMove as Reflex.Patch.DMapWithMove,
160 patch:Data.Patch.IntMap as Reflex.Patch.IntMap,
161 patch:Data.Patch.Map as Reflex.Patch.Map,
162 patch:Data.Patch.MapWithMove as Reflex.Patch.MapWithMove
164 ghc-options: -Wall -fwarn-redundant-constraints -fwarn-tabs -funbox-strict-fields -O2 -fspecialise-aggressively
166 if flag(debug-trace-events)
167 cpp-options: -DDEBUG_TRACE_EVENTS
169 bytestring >= 0.10.8 && < 0.11
171 if flag(use-reflex-optimizer)
172 cpp-options: -DUSE_REFLEX_OPTIMIZER
174 exposed-modules: Reflex.Optimizer
176 if flag(debug-propagation)
177 cpp-options: -DDEBUG -DDEBUG_TRACE_PROPAGATION -DDEBUG_TRACE_INVALIDATION
179 if flag(debug-cycles)
180 cpp-options: -DDEBUG_CYCLES
182 if flag(use-template-haskell)
183 cpp-options: -DUSE_TEMPLATE_HASKELL
185 dependent-sum >= 0.6 && < 0.8,
186 haskell-src-exts >= 1.16 && < 1.24,
187 haskell-src-meta >= 0.6 && < 0.9,
188 template-haskell >= 2.9 && < 2.16
191 other-extensions: TemplateHaskell
194 dependent-sum >= 0.6 && < 0.8
196 if flag(fast-weak) && impl(ghcjs)
197 cpp-options: -DGHCJS_FAST_WEAK
204 default-language: Haskell2010
205 type: exitcode-stdio-1.0
206 main-is: semantics.hs
208 ghc-options: -O2 -Wall -rtsopts
230 default-language: Haskell2010
231 type: exitcode-stdio-1.0
232 main-is: Reflex/Test/CrossImpl.hs
234 ghc-options: -O2 -Wall -rtsopts
252 default-language: Haskell2010
253 type: exitcode-stdio-1.0
260 , hlint (< 2.1 || >= 2.2.2) && < 3
264test-suite EventWriterT
265 default-language: Haskell2010
266 type: exitcode-stdio-1.0
267 main-is: EventWriterT.hs
282 build-depends: these-lens
288test-suite DebugCycles
289 default-language: Haskell2010
290 type: exitcode-stdio-1.0
291 main-is: DebugCycles.hs
293 ghc-options: -threaded
311 build-depends: these-lens, semialign
318 default-language: Haskell2010
319 type: exitcode-stdio-1.0
320 main-is: RequesterT.hs
338 build-depends: these-lens
346 default-language: Haskell2010
347 type: exitcode-stdio-1.0
354 default-language: Haskell2010
355 type: exitcode-stdio-1.0
356 main-is: Adjustable.hs
369 default-language: Haskell2010
370 type: exitcode-stdio-1.0
379 , monoidal-containers
388 build-depends: semialign, these-lens
396test-suite GC-Semantics
397 default-language: Haskell2010
398 type: exitcode-stdio-1.0
414 build-depends: semialign
422test-suite rootCleanup
423 default-language: Haskell2010
424 type: exitcode-stdio-1.0
425 main-is: rootCleanup.hs
440benchmark spider-bench
441 default-language: Haskell2010
442 type: exitcode-stdio-1.0
443 hs-source-dirs: bench test
445 ghc-options: -Wall -O2 -rtsopts
465benchmark saulzar-bench
466 default-language: Haskell2010
467 type: exitcode-stdio-1.0
468 hs-source-dirs: bench test
469 c-sources: bench-cbits/checkCapability.c
471 ghc-options: -Wall -O2 -rtsopts -threaded
494source-repository head
496 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