Module: Adt
- Included in:
- Monadt::EitherM, Monadt::MaybeM, Monadt::ReaderStateEitherM
- Defined in:
- lib/monadt/adt.rb
Instance Method Summary collapse
Instance Method Details
#match(o, *cases) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/monadt/adt.rb', line 15 def match(o, *cases) m = cases.find do |tpl| tpl.klass == o.class || tpl.klass == Default end params = if m.lambda.arity > 0 o.values.take(m.lambda.arity) else [] end m.lambda.call(*params) end |
#with(klass, prc = nil, &blk) ⇒ Object
28 29 30 |
# File 'lib/monadt/adt.rb', line 28 def with(klass, prc=nil, &blk) AdtPattern.new klass, prc || blk end |