class Mon::Contract::Monad

Public Instance Methods

valid?(val) click to toggle source
# File lib/contracts/monad_contract.rb, line 36
def valid?(val)
  return false unless (val.is_a? Mon::M::Monad)
  case val
  when Mon::M::List
    Mon::C::List.new(@nested_contract).valid?(val)
  when Mon::M::Maybe
    Mon::C::Maybe.new(@nested_contract).valid?(val)
  when Mon::M::Try
    Mon::C::Try.new(@nested_contract).valid?(val)
  when Mon::M::Lazy
    Mon::C::Lazy.new(@nested_contract).valid?(val)
  when Mon::M::Future
    Mon::C::Future.new(@nested_contract).valid?(val)
  when Mon::M::React
    Mon::C::React.new(@nested_contract).valid?(val)
  else
    raise RuntimeError.new("Unrecognized monad: #{ val.class }!")
  end
end