ちゃんとREPLでインタープリット!末尾再帰最適化!継続なし!(でも原理的にはすぐ実装できるはず……!)中間言語方式! class Cons def initialize(a,d) @car=a @cdr=d end attr_accessor :car attr_accessor :cdr def cadr cdr.car end def caddr cdr.cadr end def cadddr cdr.caddr end def cddr cdr.cdr end def to_a return [car] if cdr.nil? return [car] + cdr.to_a if cons? cdr raise 'not proper list' end def length return 1 if cdr.nil? return 1 + cdr.length raise 'not