Example:
require 'do_notation'
class Array
include Monad
def self.unit x
[x]
end
def bind &f
map(&f).inject([], &:+)
end
end
Array.run do
x <- ["first", "second"]
y <- ["once", "twice"]
unit("#{x} cousin #{y} removed")
end
The above code returns the array:
["first cousin once removed",
"first cousin twice removed",
"second cousin once removed",
"second cousin twice removed"]
For more examples, see the test suite.
gem install do_notation
By Aanand Prasad (aanand.prasad@gmail.com)