Cでリストライブラリ製作

car,cdr,append,reverse辺りまで作った所.でもinspectだけはRubyで書いた.

irb:0> a = List.new(1,2,3)
=> (1 2 3)
irb:0> b = List.new(a,a,a)
=> (#0=(1 2 3) #0# #0#)
irb:0> b.cdr = b
=> #0=((1 2 3) . #0#)
irb:0> List.new(a,b,b)
=> (#0=(1 2 3) #1=(#0# . #1#) #1#)
irb:0> c = List.new([a])
=> ([#0=(1 . #0#)])
irb:0> c.cdr = c
=> #0=([#0=(1 . #0#)] . #0#)
irb:0> c.car[0] = c
=> #0=([#0=([...] . #0#)] . #0#)
irb:0> d = List.new(ary = [])
=> ([])
irb:0> d.car << d
=> [([...])]
irb:0> d.cdr = List.new(d, ary)
=> #0=(([#0=([...] #0# [...])] . #0#) [#0=([...] #0# [...])])
irb:0> e = List.new(1)
=> (1)
irb:0> e.car = e
=> #0=(#0#)

配列が絡むと迷宮入りするかと思ったけど,どうやらrubyが空気を読んでくれているようだ.番号付けがおかしくなってるのは知ってる.
とりあえず,pしようとして無限ループに陥るハメにならずにすみそうだ.
番号は後から付けるようにすればいいのかな.