module Hamster
def self.hash(pairs = {}, &block)
def self.hash(pairs = {}, &block) Hash.new(pairs, &block) end
def self.mutable_hash(pairs = {}, &block)
def self.mutable_hash(pairs = {}, &block) MutableHash.new(hash(pairs, &block)) end
def self.mutable_queue(*items)
def self.mutable_queue(*items) MutableQueue.new(queue(*items)) end
def self.mutable_set(*items)
def self.mutable_set(*items) MutableSet.new(set(*items)) end
def self.mutable_stack(*items)
def self.mutable_stack(*items) MutableStack.new(stack(*items)) end
def self.queue(*items)
def self.queue(*items) items.reduce(EmptyQueue) { |queue, item| queue.enqueue(item) } end
def self.set(*items)
def self.set(*items) items.reduce(EmptySet) { |set, item| set.add(item) } end
def self.stack(*items)
def self.stack(*items) items.reduce(EmptyStack) { |stack, item| stack.push(item) } end
def self.vector(*items)
def self.vector(*items) items.reduce(EmptyVector) { |vector, item| vector.add(item) } end
def enumerate(enum)
- Api: - public
Returns:
-
(Stream)
-
Parameters:
-
enum
(Enumerator
) -- The object to iterate over
def enumerate(enum) Stream.new do begin Sequence.new(enum.next, enumerate(enum)) rescue StopIteration EmptyList end end end
def interval(from, to)
- Api: - public
Returns:
-
(Hamster::List)
-
Parameters:
-
to
(Integer
) -- End value, inclusive -
from
(Integer
) -- Start value, inclusive
def interval(from, to) return EmptyList if from > to interval_exclusive(from, to.next) end
def interval_exclusive(from, to)
def interval_exclusive(from, to) return EmptyList if from == to Stream.new { Sequence.new(from, interval_exclusive(from.next, to)) } end
def iterate(item, &block)
- Api: - public
Other tags:
- Yieldreturn: - The next value
Other tags:
- Yieldparam: The - previous value
Parameters:
-
item
(Object
) -- Starting value
def iterate(item, &block) Stream.new { Sequence.new(item, iterate(yield(item), &block)) } end
def list(*items)
- Api: - public
Returns:
-
(Hamster::List)
-
def list(*items) items.to_list end
def repeat(item)
- Api: - public
def repeat(item) Stream.new { Sequence.new(item, repeat(item)) } end
def replicate(number, item)
- Api: - public
def replicate(number, item) repeat(item).take(number) end
def stream(&block)
- Api: - public
Returns:
-
(Hamster::List)
-
def stream(&block) return EmptyList unless block_given? Stream.new { Sequence.new(yield, stream(&block)) } end