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.
The forsyde-shallow
package is available through HackageDB
and the latest stable release can be installed via your favorite
Haskell package manager.
The easiest way to getting started is by using the Stack 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. 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
You can use the 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. 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
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