Sha256: 45aaacf7d244eb9bb5d090fe3dd5c1eda552059a21f4a08970332a1c9b69b2f4
Contents?: true
Size: 1.03 KB
Versions: 1
Compression:
Stored size: 1.03 KB
Contents
# frozen_string_literal: true require_relative "higher_order_functions/version" # Higher-order functions module HigherOrderFunctions refine Object do def unfold(condition, function) raise ArgumentError unless block_given? seed = self array = [] until condition[seed] array << function[seed] seed = yield(seed) end array end def sequence raise ArgumentError unless block_given? element = self Enumerator.new do |enumerator| enumerator << element loop { enumerator << (element = yield(element)) } end end end refine Array do def scan raise ArgumentError unless block_given? drop(1).inject([first]) { |result, item| result << yield(result.last, item) } end end refine Enumerable do def inject_right(init: nil, &block) raise ArgumentError unless block_given? init ? reverse_each.inject(init, &block) : reverse_each.inject(&block) end alias_method :reduce_right, :inject_right end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
higher_order_functions-0.1.0 | lib/higher_order_functions.rb |