case_class

Scala-like case classes for Ruby

SYNOPSIS:

require "case_class"
include CaseClass

Number = Case[:n]
Sum    = Case[:e1, :e2]

# evaluation with pattern matching
def eval(n)
  case n
  when Sum[e1 = _, e2 = _] then eval(e1) + eval(e2)
  when Number[n = _] then n
  end
end

# (1 + 2) + (3 + 4) => 10
expr = Sum[Sum[Number[1], Number[2]], Sum[Number[3], Number[4]]]
p eval(expr)  #=> 10

LICENSE:

Copyright

Yusuke Endoh <[email protected]>

License

Ruby’s