Skip to content

mame/case_class

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

= 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 <mame@tsg.ne.jp>
License:: Ruby's

About

Scala-like case classes for Ruby

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages