This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
Run the following if you haven't already:
gem sources -a http://gems.github.com
Install the gem(s):
sudo gem install aanand-ruby-do-notation
commit 271935b427d99af792cf2a5cca3ada8f40a2bc34
tree d8534e1ed6ea0025d6e095d12bdedb712f5990d7
parent c18770f96d126215cda55328186509695f2cbbda
tree d8534e1ed6ea0025d6e095d12bdedb712f5990d7
parent c18770f96d126215cda55328186509695f2cbbda
| name | age | message | |
|---|---|---|---|
| |
.gitignore | ||
| |
Manifest | Mon Jun 23 03:28:28 -0700 2008 | |
| |
README.rdoc | Mon Jun 23 09:06:23 -0700 2008 | |
| |
Rakefile | ||
| |
lib/ | ||
| |
ruby-do-notation.gemspec | ||
| |
test/ |
Haskell-style monad do-notation for Ruby
Example:
require 'do_notation'
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.
Installation
There’s a gem hosted on Github, so follow the setup instructions at gems.github.com and then run:
sudo gem install aanand-ruby-do-notation
By Aanand Prasad (aanand.prasad@gmail.com)












