State
State
State
is parameterized by two types: a state <code>s</code>
and a result <code>a</code>
.
State
should wrap a function of the form <code>s -> Pair a s</code>
and can be constructed by providing a function of this form. There are three methods available on the State
for running with a given initial state.
Implements: Monad
State(f)
The State
constructor.
Param | Type | Description |
---|---|---|
f | function |
A function of the form s -> Pair a that is wrapped by the State . Nothing is executed until it is run with an initial state s . |
State.of(v)
The State
constructor that populates the right portion with its argument. of
essentially lifts a value of type a
into a State
.
Param | Type | Description |
---|---|---|
v | any |
Any value that needs to be lifted into the State |
State.toString()
Gets a stringified version of the State
.
State.map(f)
Applies the function f
to the right portion of the State
.
Param | Type | Description |
---|---|---|
f | function |
Function |
State.getValue()
Gets the function within the State
.
State.ap(t)
ap
allows for values wrapped in a State
to be applied to functions also wrapped in a State
. In order to use ap
, the State
must contain a function as its value on the right side.
Param | Type | Description |
---|---|---|
t | State |
A State with a function as its right element |
State.chain(f)
Chains together many computations that return a State
.
Param | Type | Description |
---|---|---|
f | function |
Function that returns another State |
State.runWith(s)
Since State
is a lazy datatype that requires an initial state to run, it provides a runWith
method that takes in an initial state and returns the result of the computation as a <code>Pair result state</code>
.
Param | Type | Description |
---|---|---|
s | any |
An initial state that needs to be passed to the State |
State.execWith(s)
When called, execWith
will run the state transition with the given value as the initial state and return the state.
Param | Type | Description |
---|---|---|
s | any |
An initial state that needs to be passed to the State |
State.evalWith(s)
When called, evalWith
will run the state transition with the given value as the initial state and return the result.
Param | Type | Description |
---|---|---|
s | any |
An initial state that needs to be passed to the State |