module Daitai::Map

Public Instance Methods

map() click to toggle source
# File lib/daitai/functions/map.rb, line 5
def map
  lambda do |fn, functor|
    case functor
    when Proc then proc_map(fn, functor)
    when Hash then hash_map(fn, functor)
    else default_map(fn, functor)
    end
  end.curry
end

Private Instance Methods

default_map(fn, functor) click to toggle source
# File lib/daitai/functions/map.rb, line 25
def default_map(fn, functor)
  functor.map(&fn)
end
hash_map(fn, functor) click to toggle source
# File lib/daitai/functions/map.rb, line 21
def hash_map(fn, functor)
  Hash[functor.map { |key, value| [key, fn.(value)] }]
end
proc_map(fn, functor) click to toggle source
# File lib/daitai/functions/map.rb, line 17
def proc_map(fn, functor)
  ->(*args) { fn.(*functor.(*args)) }
end