Module: Hamster

Extended by:
Forwardable
Defined in:
lib/hamster/set.rb,
lib/hamster/hash.rb,
lib/hamster/list.rb,
lib/hamster/trie.rb,
lib/hamster/tuple.rb,
lib/hamster/stack.rb,
lib/hamster/queue.rb,
lib/hamster/sorter.rb,
lib/hamster/vector.rb,
lib/hamster/version.rb,
lib/hamster/undefined.rb,
lib/hamster/immutable.rb,
lib/hamster/enumerable.rb,
lib/hamster/core_ext/io.rb,
lib/hamster/mutable_hash.rb,
lib/hamster/read_copy_update.rb,
lib/hamster/core_ext/enumerator.rb,
lib/hamster/core_ext/enumerable.rb,
lib/hamster/experimental/mutable_set.rb,
lib/hamster/experimental/mutable_stack.rb,
lib/hamster/experimental/mutable_queue.rb

Defined Under Namespace

Modules: CoreExt, EmptyList, Enumerable, Immutable, List, ReadCopyUpdate, Undefined Classes: Hash, MutableHash, MutableQueue, MutableSet, MutableStack, Queue, Sequence, Set, Sorter, Stack, Stream, Trie, Tuple, Vector

Constant Summary

EmptySet =
Set.new
EmptyHash =
Hash.new
EmptyTrie =
Trie.new(0)
EmptyStack =
Stack.new
EmptyQueue =
Queue.new
EmptyVector =
Vector.new
VERSION =
"0.4.3".freeze

Class Method Summary (collapse)

Class Method Details

+ (Object) hash(pairs = {}, &block)



10
11
12
# File 'lib/hamster/hash.rb', line 10

def self.hash(pairs = {}, &block)
  Hash.new(pairs, &block)
end

+ (Object) interval(from, to)



27
28
29
30
# File 'lib/hamster/list.rb', line 27

def interval(from, to)
  return EmptyList if from > to
  interval_exclusive(from, to.next)
end

+ (Object) iterate(item, &block)



41
42
43
# File 'lib/hamster/list.rb', line 41

def iterate(item, &block)
  Stream.new { Sequence.new(item, iterate(yield(item), &block)) }
end

+ (Object) list(*items)



18
19
20
# File 'lib/hamster/list.rb', line 18

def list(*items)
  items.to_list
end

+ (Object) mutable_hash(pairs = {}, &block)



7
8
9
# File 'lib/hamster/mutable_hash.rb', line 7

def self.mutable_hash(pairs = {}, &block)
  MutableHash.new(hash(pairs, &block))
end

+ (Object) mutable_queue(*items)



7
8
9
# File 'lib/hamster/experimental/mutable_queue.rb', line 7

def self.mutable_queue(*items)
  MutableQueue.new(queue(*items))
end

+ (Object) mutable_set(*items)



7
8
9
# File 'lib/hamster/experimental/mutable_set.rb', line 7

def self.mutable_set(*items)
  MutableSet.new(set(*items))
end

+ (Object) mutable_stack(*items)



7
8
9
# File 'lib/hamster/experimental/mutable_stack.rb', line 7

def self.mutable_stack(*items)
  MutableStack.new(stack(*items))
end

+ (Object) queue(*items)



8
9
10
# File 'lib/hamster/queue.rb', line 8

def self.queue(*items)
  items.reduce(EmptyQueue) { |queue, item| queue.enqueue(item) }
end

+ (Object) repeat(item)



33
34
35
# File 'lib/hamster/list.rb', line 33

def repeat(item)
  Stream.new { Sequence.new(item, repeat(item)) }
end

+ (Object) replicate(number, item)



37
38
39
# File 'lib/hamster/list.rb', line 37

def replicate(number, item)
  repeat(item).take(number)
end

+ (Object) set(*items)



12
13
14
# File 'lib/hamster/set.rb', line 12

def self.set(*items)
  items.reduce(EmptySet) { |set, item| set.add(item) }
end

+ (Object) stack(*items)



8
9
10
# File 'lib/hamster/stack.rb', line 8

def self.stack(*items)
  items.reduce(EmptyStack) { |stack, item| stack.push(item) }
end

+ (Object) stream(&block)



22
23
24
25
# File 'lib/hamster/list.rb', line 22

def stream(&block)
  return EmptyList unless block_given?
  Stream.new { Sequence.new(yield, stream(&block)) }
end

+ (Object) vector(*items)



9
10
11
# File 'lib/hamster/vector.rb', line 9

def self.vector(*items)
  items.reduce(EmptyVector) { |vector, item| vector.add(item) }
end