Class: MPrelude::Either::Left

Inherits:
MPrelude::Either show all
Defined in:
lib/mprelude.rb

Instance Method Summary collapse

Methods inherited from MPrelude::Either

#left?, #right?, wrap_error

Instance Method Details

#apply(&block) ⇒ Either::Left<Object>

Evaluate applicative block

Returns:



117
118
119
# File 'lib/mprelude.rb', line 117

def apply(&block)
  require_block(&block)
end

#either(left, _right) ⇒ Object

Evaluate left side of branch

Parameters:

  • left (#call)
  • _right (#call)


153
154
155
# File 'lib/mprelude.rb', line 153

def either(left, _right)
  left.call(value)
end

#fmap(&block) ⇒ Either::Left<Object>

Evaluate functor block

Returns:



110
111
112
# File 'lib/mprelude.rb', line 110

def fmap(&block)
  require_block(&block)
end

#from_leftObject

Unwrap value from left

Returns:

  • (Object)


124
125
126
# File 'lib/mprelude.rb', line 124

def from_left
  value
end

#from_rightObject

Unwrap value from right

rubocop:disable Style/GuardClause

Returns:

  • (Object)


133
134
135
136
137
138
139
# File 'lib/mprelude.rb', line 133

def from_right
  if block_given?
    yield(value)
  else
    fail "Expected right value, got #{inspect}"
  end
end

#lmapEither::Right<Object>

Map over left value

Returns:



145
146
147
# File 'lib/mprelude.rb', line 145

def lmap
  Left.new(yield(value))
end