function bindEither

Either<a c> ::= m::Either<a b> fn::(Either<a c> ::= b)

In file: Either.sv

function returnEither

Either<a b> ::= x::b

In file: Either.sv

function bindMaybe

Maybe<b> ::= m::Maybe<a> fn::(Maybe<b> ::= a)

In file: Maybe.sv

function returnMaybe

Maybe<a> ::= x::a

In file: Maybe.sv

function bindList

[b] ::= l::[a] fn::([b] ::= a)

In file: List.sv

function returnList

[a] ::= x::a

In file: List.sv

nonterminal IOMonad<a>

In file: IO.sv

abstract production bindIO

top::IOMonad<b> ::= st::IOMonad<a> fn::(IOMonad<b> ::= a)

In file: IO.sv

abstract production returnIO

top::IOMonad<a> ::= x::a

In file: IO.sv

function runIO

IO ::= st::IOMonad<a> ioIn::IO

In file: IO.sv

function evalIO

IOVal<a> ::= st::IOMonad<a> ioIn::IO

In file: IO.sv

function unsafeEvalIO

a ::= st::IOMonad<a>

In file: IO.sv

abstract production printM

top::IOMonad<Unit> ::= s::String

In file: IO.sv

abstract production readLineStdinM

top::IOMonad<String> ::=

In file: IO.sv

abstract production exitM

top::IOMonad<Unit> ::= val::Integer

In file: IO.sv

abstract production mkdirM

top::IOMonad<Boolean> ::= s::String

In file: IO.sv

abstract production systemM

top::IOMonad<Integer> ::= s::String

In file: IO.sv

abstract production writeFileM

top::IOMonad<Unit> ::= file::String contents::String

In file: IO.sv

abstract production appendFileM

top::IOMonad<Unit> ::= file::String contents::String

In file: IO.sv

abstract production fileTimeM

top::IOMonad<Integer> ::= s::String

In file: IO.sv

abstract production isFileM

top::IOMonad<Boolean> ::= s::String

In file: IO.sv

abstract production isDirectoryM

top::IOMonad<Boolean> ::= s::String

In file: IO.sv

abstract production readFileM

top::IOMonad<String> ::= s::String

In file: IO.sv

abstract production cwdM

top::IOMonad<String> ::=

In file: IO.sv

abstract production envVarM

top::IOMonad<String> ::= s::String

In file: IO.sv

abstract production listContentsM

top::IOMonad<[String]> ::= s::String

In file: IO.sv

abstract production deleteFileM

top::IOMonad<Boolean> ::= s::String

In file: IO.sv

abstract production deleteTreeM

top::IOMonad<Unit> ::= s::String

In file: IO.sv

abstract production copyFileM

top::IOMonad<Unit> ::= src::String dst::String

In file: IO.sv

abstract production touchFileM

top::IOMonad<Unit> ::= file::String

In file: IO.sv

nonterminal State<s a>

In file: State.sv

abstract production bindState

top::State<s b> ::= st::State<s a> fn::(State<s b> ::= a)

In file: State.sv

abstract production returnState

top::State<s a> ::= x::a

In file: State.sv

abstract production getState

top::State<s s> ::=

In file: State.sv

abstract production setState

top::State<s Unit> ::= newState::s

In file: State.sv

function runState

Pair<s a> ::= st::State<s a> initialState::s

In file: State.sv

function evalState

a ::= st::State<s a> initialState::s

In file: State.sv