Module: Dry::Monads::Transformer Private
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Advanced tranformations.
Instance Method Summary collapse
-
#fmap2(*args) ⇒ Object
private
Lifts a block/proc over the 2-level nested structure.
-
#fmap3(*args) ⇒ Object
private
Lifts a block/proc over the 3-level nested structure.
Instance Method Details
#fmap2(*args) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Lifts a block/proc over the 2-level nested structure. This is essentially fmap . fmap (. is the function composition operator from Haskell) or the functor instance for a two-level monadic structure like List Either.
18 19 20 21 22 23 24 25 |
# File 'lib/dry/monads/transformer.rb', line 18 def fmap2(*args) if block_given? fmap { |a| a.fmap { |b| yield(b, *args) } } else func, *rest = args fmap { |a| a.fmap { |b| func.(b, *rest) } } end end |
#fmap3(*args) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Lifts a block/proc over the 3-level nested structure.
36 37 38 39 40 41 42 43 |
# File 'lib/dry/monads/transformer.rb', line 36 def fmap3(*args) if block_given? fmap { |a| a.fmap { |b| b.fmap { |c| yield(c, *args) } } } else func, *rest = args fmap { |a| a.fmap { |b| b.fmap { |c| func.(c, *rest) } } } end end |