Haskell-style monad do-notation for Ruby
Example:
class Array
include Monad
def self.unit x
[x]
end
def bind &f
map(&f).inject([]){ |a,b| a+b }
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.
By Aanand Prasad ([email protected])