module Numbers

Private Instance Methods

add(increment) click to toggle source
# File lib/totally_lazy/numbers.rb, line 7
def add(increment)
  -> (number) { number + increment }
end
divide(divisor) click to toggle source
# File lib/totally_lazy/numbers.rb, line 19
def divide(divisor)
  ->(dividend) { dividend / divisor }
end
even() click to toggle source
# File lib/totally_lazy/numbers.rb, line 11
def even
  remainder_is(2, 0)
end
greater_than(right) click to toggle source
# File lib/totally_lazy/numbers.rb, line 47
def greater_than(right)
  predicate(->(left) { left > right })
end
increment() click to toggle source
# File lib/totally_lazy/numbers.rb, line 39
def increment
  ->(number) { number + 1 }
end
mod(divisor) click to toggle source
# File lib/totally_lazy/numbers.rb, line 43
def mod(divisor)
  ->(number) { number % divisor }
end
multiply(y) click to toggle source
# File lib/totally_lazy/numbers.rb, line 51
def multiply(y)
  monoid(->(x){x * y}, 1)
end
odd() click to toggle source
# File lib/totally_lazy/numbers.rb, line 15
def odd
  remainder_is(2, 1)
end
powers_of(amount) click to toggle source
# File lib/totally_lazy/numbers.rb, line 55
def powers_of(amount)
  enumerate(multiply(amount), 1)
end
range(from, to) click to toggle source
# File lib/totally_lazy/numbers.rb, line 35
def range(from, to)
  Sequence.new((from..to).lazy)
end
range_from(start) click to toggle source
# File lib/totally_lazy/numbers.rb, line 31
def range_from(start)
  Sequence.new(enumerator_of(increment, start))
end
remainder(dividend, divisor) click to toggle source
# File lib/totally_lazy/numbers.rb, line 27
def remainder(dividend, divisor)
  dividend % divisor
end
remainder_is(divisor, remainder) click to toggle source
# File lib/totally_lazy/numbers.rb, line 23
def remainder_is(divisor, remainder)
  predicate(->(dividend) { remainder(dividend, divisor) == remainder })
end
sum() click to toggle source
# File lib/totally_lazy/numbers.rb, line 3
def sum
  monoid(->(a, b) { a + b }, 0)
end