Skip to content

Instantly share code, notes, and snippets.

View djspinmonkey's full-sized avatar

John Hyland djspinmonkey

View GitHub Profile
defmodule Bottles do
def song do
verses(99, 0)
end
def verses(first, last) do
first..last
|> Enum.map_join("\n", &verse(&1))
end
class Bottles
def song
verses(99, 0)
end
def verses(first, last)
first.downto(last).map { |n| verse(n) }.join("\n")
end
@djspinmonkey
djspinmonkey / gist:1345883
Created November 7, 2011 19:26
An implementation of destruct without using eval or #binding
def assert( bool, msg )
puts (bool ? "Pass " : "Fail ") + msg
end
class Hash
def destruct( &block )
vals = block.parameters.map { |p| self[p[1]] }
block.call(*vals)
end
end