cat/instances/monad
Monad instances: Writer, Reader.
Values
pub fn reader_monad(
,
) -> monad.Monad(
types.ReaderF(r),
a,
b,
cat.Reader(r, a),
cat.Reader(r, b),
cat.Reader(r, fn(a) -> b),
)
Monad instance for Reader.
instance Monad ((->) r) where
f >>= k = \ r -> k (f r) r
pub fn writer_monad(
,
) -> monad.Monad(
types.WriterF,
a,
b,
cat.Writer(a),
cat.Writer(b),
cat.Writer(fn(a) -> b),
)
Monad instance for Writer.
instance Monad Writer where
ma >>= k =
let (va, log1) = runWriter ma
(vb, log2) = runWriter (k va)
in Writer (vb, log1 ++ log2)