Module: MiniKraken::Composite::List
- Defined in:
- lib/mini_kraken/composite/list.rb
Overview
Module that implements convenience methods for manipulating proper lists represented with ConsCell objects.
Class Method Summary collapse
-
.cons(obj1, obj2 = nil) ⇒ Composite::ConsCell
Factory method for constructing a ConsCell pair.
-
.make_list(arr) ⇒ Composite::ConsCell
Factory method.
Class Method Details
.cons(obj1, obj2 = nil) ⇒ Composite::ConsCell
Factory method for constructing a ConsCell pair.
14 15 16 |
# File 'lib/mini_kraken/composite/list.rb', line 14 def self.cons(obj1, obj2 = nil) ConsCell.new(obj1, obj2) end |
.make_list(arr) ⇒ Composite::ConsCell
Factory method. Build a proper list with elements of given array.
21 22 23 24 25 26 27 28 29 |
# File 'lib/mini_kraken/composite/list.rb', line 21 def self.make_list(arr) return cons(nil, nil) if arr.empty? reversed = arr.reverse reversed.reduce(nil) do |sub_result, elem| ConsCell.new(elem, sub_result) end end |