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
|