Class: Mon::Contract::Monad
- Inherits:
-
MonadContract
- Object
- Contracts::CallableClass
- MonadContract
- Mon::Contract::Monad
- Defined in:
- lib/contracts/monad_contract.rb
Instance Method Summary collapse
Methods inherited from MonadContract
#initialize, #nested_contract, #to_s, #valid_nested_contract?
Constructor Details
This class inherits a constructor from Mon::Contract::MonadContract
Instance Method Details
#valid?(val) ⇒ Boolean
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# 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 |