packages feed

forsyde-shallow-3.3.3.0: README.md

[![Build Status](https://travis-ci.org/forsyde/forsyde-shallow.svg?branch=master)](https://travis-ci.org/forsyde/forsyde-shallow)

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](http://forsyde.ict.kth.se/).


Installation
------------

The [`forsyde-shallow`](https://hackage.haskell.org/package/forsyde-shallow)
package is available through [HackageDB](https://hackage.haskell.org/)
and the latest stable release can be installed via your favorite
Haskell package manager.

### Using Stack

The easiest way to getting started is by using the
[Stack](https://docs.haskellstack.org/en/stable/README/) package
manager, which takes care of fetching and installing an appropriate
version of the Haskell compiler, the dependent packages, and sets
everything up in a sandboxed environment.

    stack update
    stack upgrade
    stack install forsyde-shallow
    stack ghci      # starts an interpreter session
	
To install the latest updates and nightly builds you need clone
[this repository](https://github.com/forsyde/forsyde-shallow). To
install and use the contents of this repository globally, some useful
commands are:

    stack install
	stack test                        # runs the test suites
	stack haddock                     # generates the API documentation
	stack ghci --no-load              # starts an interpreter session, option given to avoid pre-loading all modules

### Using Cabal

You can use the [Cabal](https://www.haskell.org/cabal/) package
manager, but then you need to take care of acquiring an appropriate
Haskell tool suite which includes the GHC compiler and the
`cabal-install` package.

    cabal update
    cabal install forsyde-shallow
    ghci
	
To install the latest updates and nightly builds you need clone
[this repository](https://github.com/forsyde/forsyde-shallow). 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](https://github.com/forsyde/forsyde-shallow-examples)
repository, and the online 
[API documentation](https://hackage.haskell.org/package/forsyde-shallow)