class Hamster::Realizable

@private
Common behavior for other classes which implement various kinds of ‘List`s

def cached_size?

def cached_size?
  @size != nil
end

def empty?

def empty?
  realize if @head == Undefined
  @size == 0
end

def head

def head
  realize if @head == Undefined
  @head
end

def initialize

def initialize
  @head, @tail, @size = Undefined, Undefined, nil
end

def realized?

def realized?
  @head != Undefined
end

def size

def size
  @size ||= super
end

def tail

def tail
  realize if @tail == Undefined
  @tail
end