MyNixOS website logo
Description

ForSyDe's Haskell-embedded Domain Specific Language.

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: https://forsyde.github.io/. For examples and tutorials using ForSyDe.Shallow, check the forsyde-shallow-examples repository.

This package is a spin-off of the ForSyDe project and it follows its versioning.

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.

Using Stack

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

Using Cabal

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

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.

Metadata

Version

3.5.0.0

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows