nim_iterator_stream_experiment/monad/reader

The Reader monad.

A Reader[S, T] is a function that reads some environment (or state) S and returns some value T.

Types

Reader[S; T] = S -> T
  Source Edit

Procs

proc run[S; T](self: Reader[S, T]; state: S): T
  Source Edit

Funcs

func ask(S: typedesc): Reader[S, S]
Can be used to retrieve the read state within a flatMap call.   Source Edit
func ask[S](): Reader[S, S]
  Source Edit
func toReader[T](value: T; S: typedesc): Reader[S, T]
  Source Edit
func toReader[S; T](value: T): Reader[S, T]
  Source Edit
func map[S; A; B](self: Reader[S, A]; f: A -> B): Reader[S, B]
  Source Edit
func flatMap[S; A; B](self: Reader[S, A]; f: A -> Reader[S, B]): Reader[S, B]
  Source Edit
func local[S; T](self: Reader[S, T]; f: S -> S): Reader[S, T]
Returns a Reader that will execute self in an environment modified by f.   Source Edit