Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Cons
- def car; @e[0]; end
- def cdr; @e[1]; end
- def initialize(car,cdr)
- @e = [car,cdr]
- end
- def inspect(firstp=true)
- if cdr.class == Cons
- if firstp
- "(#{car.inspect} #{cdr.inspect(false)})"
- else
- "#{car.inspect} #{cdr.inspect(false)}"
- end
- elsif cdr.nil?
- if firstp
- "(#{car.inspect})"
- else
- "#{car.inspect}"
- end
- elsif firstp
- "(#{car.inspect} . #{cdr.inspect})"
- else
- "#{car.inspect} . #{cdr.inspect}"
- end
- end
- def self.list(*args)
- args.reverse.inject(nil){|acc,e| Cons.new(e, acc)}
- end
- end
- if __FILE__ == $0
- p Cons.new(1,nil)
- p Cons.new(1,2)
- p Cons.new(1, Cons.new(2,3))
- p Cons::list()
- p Cons::list(1,2,3)
- p Cons::list(1,2,3,4,5)
- p Cons::list(1,Cons::list(2,3),4)
- end
Add Comment
Please, Sign In to add comment