class Rubic::Builtin::List

Public Instance Methods

car(l) click to toggle source
# File lib/rubic/builtin/list.rb, line 8
def car(l)
  unless pair? l
    raise Rubic::TypeError, "pair required, but got `#{l}'"
  end
  l.first
end
cdr(l) click to toggle source
# File lib/rubic/builtin/list.rb, line 15
def cdr(l)
  unless pair? l
    raise Rubic::TypeError, "pair required, but got `#{l}'"
  end
  l.last
end
cons(a, b) click to toggle source
# File lib/rubic/builtin/list.rb, line 4
def cons(a, b)
  [a, b]
end
list(*args) click to toggle source
# File lib/rubic/builtin/list.rb, line 22
def list(*args)
  args.reverse.reduce([]) {|res, e| [e, res] }
end
null?(suspect) click to toggle source
# File lib/rubic/builtin/list.rb, line 30
def null?(suspect)
  suspect.is_a?(Array) ? suspect.empty? : false
end
pair?(suspect) click to toggle source
# File lib/rubic/builtin/list.rb, line 26
def pair?(suspect)
  suspect.is_a?(Array) ? suspect.any? : false
end