-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy patheuphoria.cabal
131 lines (125 loc) · 5.12 KB
/
euphoria.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
cabal-version: 2.4
name: euphoria
version: 0.8.0.0
synopsis: Dynamic network FRP with events and continuous values
description:
Euphoria is FRP with practicality.
.
FRP is a good way to model computations which need run for an extended
period of time, react to incoming events, and continually produce
output. Simulations, games, and GUIs are all good candidates for FRP.
.
In Euphoria, networks (dataflow graphs) are dynamic. Networks are
first-class values which can be passed around inside of other
networks, and they can be connected together at any time. This
flexibility allows complicated, real-world problems to be modeled with
FRP.
.
Though Euphoria is flexible and high-level, it makes some concessions
for performance and the underlying implementation.
.
Euphoria works in discrete steps. You will construct the body of your
program as an FRP network. To get results, you must perform an IO
action to step the network. After stepping, your network will have
produced some result, such as a string, which you can print to the
screen. A network can also produce IO actions as an output. Step the
network as many times as necessary to continue running your program.
.
A simulation, game, or GUI will probably loop while stepping until the
user terminates the program.
.
Euphoria is mostly concerned with three types: Signal, Event, and
Discrete.
.
Signal represents a continuous value that changes with each
step of the network. Discrete is like Signal, but it is possible to
determine if its value has not changed, and avoid unnecessary
computation. As long as a Signal or Discrete exists, it will contain a
value. Event represents something that exists for only one moment in
time, such as a packet received over a socket, or a mouse click.
.
Signals and Discretes are instances of Monad and Applicative. Events
are instances of Monoid.
.
SignalGen is the outer monad, where networks are constructed.
SignalGen is an instance of Monad and Applicative. SignalGens inside
of Signals, Discretes, or Events can be used to attach new networks to
the existing network on the fly.
.
Signals, Discretes and Events may contain other Signals, Discretes or
Events. Euphoria encourages the use of dynamic network construction
using these higher-order FRP types, and they can be attached or
detached from the network with ease. Euphoria relies on garbage
collection and weak pointers to prune the network when parts of it are
no longer needed.
.
Euphoria is built on top of the Elerea library by Patai Gergely.
license: CC0-1.0
license-file: LICENSE
author: Takano Akio, Andrew Richards, Liyang HU
maintainer: [email protected] <Takano Akio>
-- copyright:
category: FRP
build-type: Simple
homepage: http://github.com/tsurucapital/euphoria
tested-with: GHC == 8.6.4
, GHC == 8.8.3
source-repository head
type: git
location: git://github.com/tsurucapital/euphoria.git
library
exposed-modules: FRP.Euphoria.Event
, FRP.Euphoria.Signal
, FRP.Euphoria.Update
, FRP.Euphoria.Collection
, FRP.Euphoria.EnumCollection.Lazy
, FRP.Euphoria.EnumCollection.Strict
, FRP.Euphoria.HashCollection.Lazy
, FRP.Euphoria.HashCollection.Strict
, FRP.Euphoria.Abbrev
, FRP.Euphoria.Internal.GenericCollection
, FRP.Euphoria.Internal.Maplike
other-modules: FRP.Elerea.Simple.Compat
-- other-modules:
build-depends: HUnit
, base >= 4.7 && < 5
, elerea >= 2.7 && < 2.10
, enummapset-th >= 0.6.2
, deepseq
, hashable >= 1.2
, containers >= 0.5.5
, unordered-containers >= 0.2.5
, transformers >= 0.4.1
ghc-options: -Wall -Wcompat
default-language: Haskell2010
test-suite tests
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: tests
other-modules: FRP.Euphoria.EnumCollection.Lazy.Test
FRP.Euphoria.Event.Test
FRP.Euphoria.HashCollection.Strict.Test
FRP.Euphoria.Update.Test
ghc-options: -Wall
build-depends: HUnit
, base
, euphoria
, test-framework
, test-framework-hunit
default-language: Haskell2010
benchmark bench
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: benchmarks
other-modules: FRP.Euphoria.EnumCollection.Lazy.Bench
FRP.Euphoria.EnumCollection.Strict.Bench
FRP.Euphoria.HashCollection.Lazy.Bench
FRP.Euphoria.HashCollection.Strict.Bench
ghc-options: -Wall
build-depends: base
, criterion
, deepseq
, euphoria
, enummapset-th
, unordered-containers
default-language: Haskell2010