case_class icon indicating copy to clipboard operation
case_class copied to clipboard

Scala-like case classes for Ruby

= 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