@hackage forsyde-shallow3.3.2.0

ForSyDe's Haskell-embedded Domain Specific Language.

Build Status

ForSyDe's Haskell-embedded Domain Specific Language

Description

The ForSyDe (Formal System Design) methodology has been developed with the objective to move system design to a higher level of abstraction and to bridge the abstraction gap by transformational design refinement.

This library provides a shallow implementation of ForSyDe as a Haskell-embedded Domain Specific Language (DSL)

For more information, please see ForSyDe's website.

Installation

The forsyde-shallow package is available through HackageDB and the latest stable release can be installed via your favorite Haskell package manager, e.g.:

cabal update
cabal install forsyde-shallow

To install the latest updates and nightly builds you need clone this repository. To install and use the contents of this repository globally, some useful commands are:

cabal install -j4 --enable-tests
cabal configure --enable tests
cabal test                        # runs the test suites
cabal haddock                     # generates the API documentation
ghci                              # starts an interpreter session

To install and use the contents of this repository in a sandbox environment (recommended), the equivalent commands are:

cabal sandbox init
cabal install -j4 --enable-tests
cabal configure --enable tests
cabal test                        # runs the test suites
cabal haddock                     # generates the API documentation
cabal repl                        # starts an interpreter session with the sandbox loaded

Getting started

To get started with using ForSyDe.Shallow, once succesfully installed open an interpreter session and load the library:

> :m +ForSyDe.Shallow
> let s = signal [1..4] :: Signal Int
> mooreSY (+) (*2) 0 s
{0,2,6,12,20}

The example above implements a Moore finite state machine that calculates the running sum and multiplies the output with 2. For more examples and tutorials please check the forsyde-shallow-examples repository, and the online API documentation