class Kleisli::Contracts::EitherOf
Public Instance Methods
monad_valid(val)
click to toggle source
# File lib/kleisli/contracts.rb, line 30 def monad_valid(val) [Kleisli::Either::Left, Kleisli::Either::Right]. include?(val.class) end
valid?(val)
click to toggle source
# File lib/kleisli/contracts.rb, line 34 def valid?(val) return false unless monad_valid(val) && @inner_types.size == 2 left_valid, _ = Contract.valid?(val.left, @inner_types.first) right_valid, _ = Contract.valid?(val.right, @inner_types.last) (val.left.nil? && right_valid) || (val.right.nil? && left_valid) end