(.module: [library [lux {"-" [if loop]} ["$" documentation {"+" [documentation:]}] [data [text {"+" [\n]} ["%" format {"+" [format]}]]] [macro ["[0]" template]]]] [\\library ["[0]" /]]) (documentation: /.lifted "Wraps a monadic value with Maybe machinery." [(lifted monad)]) (documentation: /.else (format "Allows you to provide a default value that will be used" \n "if a (Maybe x) value turns out to be #.None." \n "Note: the expression for the default value will not be computed if the base computation succeeds.") [(else +20 (#.Some +10)) "=>" +10] [(else +20 #.None) "=>" +20]) (documentation: /.trusted (format "Assumes that a Maybe value is a #.Some and yields its value." \n "Raises/throws a runtime error otherwise." \n "WARNING: Use with caution.") [(trusted trusted_computation)]) (documentation: /.when "Can be used as a guard in (co)monadic be/do expressions." [(do monad [value (do_something 1 2 3) .when (passes_test? value)] (do_something_else 4 5 6))]) (.def: .public documentation (.List $.Module) ($.module /._ "" [..lifted ..else ..trusted ..when ($.default /.monoid) ($.default /.functor) ($.default /.apply) ($.default /.monad) ($.default /.equivalence) ($.default /.hash) ($.default /.with) ($.default /.list)] []))