Minilib.Trait.Traversable
Defined in minilib-common@0.6.1
Values
namespace Minilib.Trait.Traversable
foreach_m
Type: [m : Std::Monad, t : Minilib.Trait.Traversable::Traversable, t : Std::Functor] (a -> m ()) -> t a -> m ()
ta.foreach_m(f)
maps each element with f
, then performs all elements sequentially and forgets the results.
Similar to Haskell's mapM
function, but the results are discarded.
Example:
["hello", "world"].foreach_m(println);;
==> ("hello\nworld\n" is printed)
map_m
Type: [m : Std::Monad, t : Minilib.Trait.Traversable::Traversable, t : Std::Functor] (a -> m b) -> t a -> m (t b)
ta.map_m(f)
maps each element with f
, then performs all elements sequentially and collects the results.
Similar to Haskell's mapM
function.
Example:
let ios = ...Array of IO operations...;
let tasks = *ios.map_m(AsyncIOTask::make);
let results = *tasks.map_m(get);
==> (tasks are created and started in parallel, then the results of tasks are collected)
traverse
Type: [m : Std::Monad, t : Minilib.Trait.Traversable::Traversable, t : Std::Functor] (a -> m b) -> t a -> m (t b)
ta.traverse(f)
maps each element with f
, then performs all elements sequentially and collects the results.
traverse
is a synonym of map_m
.
namespace Minilib.Trait.Traversable::Traversable
sequence
Type: [t : Minilib.Trait.Traversable::Traversable, m : Std::Monad] t (m a) -> m (t a)
ta.sequence
performs all elements sequentially and collects the results.
Similar to Haskell's sequence
function.
Types and aliases
Traits and aliases
namespace Minilib.Trait.Traversable
trait [t : *->*] t : Traversable
A trait for types which can traverse all elements with Monad
.
method sequence
Type: [m : Std::Monad] t (m a) -> m (t a)
ta.sequence
performs all elements sequentially and collects the results.
Similar to Haskell's sequence
function.