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