Guest User

Untitled

a guest
Jun 19th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. class Cons
  2. def car; @e[0]; end
  3. def cdr; @e[1]; end
  4.  
  5. def initialize(car,cdr)
  6. @e = [car,cdr]
  7. end
  8.  
  9. def inspect(firstp=true)
  10. if cdr.class == Cons
  11. if firstp
  12. "(#{car.inspect} #{cdr.inspect(false)})"
  13. else
  14. "#{car.inspect} #{cdr.inspect(false)}"
  15. end
  16. elsif cdr.nil?
  17. if firstp
  18. "(#{car.inspect})"
  19. else
  20. "#{car.inspect}"
  21. end
  22. elsif firstp
  23. "(#{car.inspect} . #{cdr.inspect})"
  24. else
  25. "#{car.inspect} . #{cdr.inspect}"
  26. end
  27. end
  28.  
  29. def self.list(*args)
  30. args.reverse.inject(nil){|acc,e| Cons.new(e, acc)}
  31. end
  32. end
  33.  
  34. if __FILE__ == $0
  35. p Cons.new(1,nil)
  36. p Cons.new(1,2)
  37. p Cons.new(1, Cons.new(2,3))
  38. p Cons::list()
  39. p Cons::list(1,2,3)
  40. p Cons::list(1,2,3,4,5)
  41. p Cons::list(1,Cons::list(2,3),4)
  42. end
Add Comment
Please, Sign In to add comment