monadic
macro_rules! wrdo { (pure $e:expr ) => { ... }; (let $v:ident = $e:expr ; $($rest:tt)*) => { ... }; (_ <- $monad:expr ; $($rest:tt)* ) => { ... }; ($v:ident <- pure $e:expr ; $($rest:tt)* ) => { ... }; ($v:ident <- $monad:expr ; $($rest:tt)* ) => { ... }; ($monad:expr ) => { ... }; }
macro for a Writer<A, W = String> monad that holds a pair (A, Monoid)
Writer<A, W = String>
The logger type (a local Monoid instance) can be established by using a tell_...() generator or by constraining the type of the macro result.
tell_...()