packages feed

euphoria-0.8.0.0: euphoria.cabal

-- Initial euphoria.cabal generated by cabal init. For further documentation,
-- see http://haskell.org/cabal/users-guide/

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:             PublicDomain
license-file:        LICENSE
author:              Takano Akio, Andrew Richards, Liyang HU
maintainer:          aljee@hyper.cx <Takano Akio>
-- copyright:
category:            FRP
build-type:          Simple
cabal-version:       >=1.8
homepage:            http://github.com/tsurucapital/euphoria
tested-with:         GHC == 7.10.3
                   , GHC == 8.0.1

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 && < 4.10
                     , elerea >= 2.7 && < 2.10
                     , enummapset-th >= 0.6
                     , deepseq
                     , hashable >= 1.2
                     , containers >= 0.5.5
                     , unordered-containers >= 0.2.5
                     , transformers >= 0.4.1

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
                , test-framework-th

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