Class: Rupture::List

Inherits:
Seq show all
Defined in:
lib/rupture/list.rb

Constant Summary collapse

Empty =
create(nil, 0)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Seq

#[], #eql?, #inspect, #to_ary

Methods included from Sequence

#concat, #count, #divide, #doall, #drop, #drop_last, #drop_while, #each, #empty?, #every?, #filter, #first, #flatten, #foldr, #frequencies, #into, #last, #map, #map_indexed, #mapcat, #next, #not_empty, #nth, #partition, #partition_all, #partition_between, #partition_by, #reduce, #reductions, #remove, #rest, #reverse, #second, #separate, #sequential?, #some, #sort, #sort_by, #split_at, #split_with, #take, #take_last, #take_while, #tree_seq

Constructor Details

#initialize(seq, size) ⇒ List

Returns a new instance of List.



9
10
11
12
# File 'lib/rupture/list.rb', line 9

def initialize(seq, size)
  @seq = seq.seq
  @size = size
end

Instance Attribute Details

#seqObject (readonly)

Returns the value of attribute seq.



7
8
9
# File 'lib/rupture/list.rb', line 7

def seq
  @seq
end

#sizeObject (readonly)

Returns the value of attribute size.



7
8
9
# File 'lib/rupture/list.rb', line 7

def size
  @size
end

Class Method Details

.new(*args) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/rupture/list.rb', line 14

def self.new(*args)
  list = Empty
  args.reverse_each do |x|
    list = list.conj(x)
  end

  list
end

Instance Method Details

#conj(x) ⇒ Object



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

def conj(x)
  self.class.send(:create, Cons.new(x, @seq), @size.inc)
end