module Bluepine::Functions

FP helpers

Public Instance Methods

compose(*fns) click to toggle source

Compose functions compose : (a -> b) -> (b -> c) -> a -> c

# File lib/bluepine/functions.rb, line 25
def compose(*fns)
  ->(v) {
    fns.reduce(fns.shift.(v)) do |x, f|
      x.respond_to?(:compose) ? x.compose(f) : f.(x)
    end
  }
end
compose_result(*fns) click to toggle source

A composition that early returns value f : a -> b g : a -> c

# File lib/bluepine/functions.rb, line 36
def compose_result(*fns)
  ->(v) {
    fns.reduce(fns.shift.(v)) do |x, f|
      x ? x : f.(v)
    end
  }
end
curry(method, *args) click to toggle source

Curry instance method

# File lib/bluepine/functions.rb, line 45
def curry(method, *args)
  self.method(method).curry[*args]
end
result(value, errors = nil) click to toggle source
# File lib/bluepine/functions.rb, line 19
def result(value, errors = nil)
  Result.new(value, errors)
end