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