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