05/08/08 22:16:21
>>653
インデントの情報も付加して説明すると、
(((a) 0)) ;; インデント0の組
↓
(((b a) 0)) ;; 同一インデントはそのままスタック先頭にcons
↓
(((c) 2) ((b a) 0)) ;; インデント2>0なので新規にスタック追加
↓
(((d) 4) ((c) 2) ((b a) 0)) ;; インデント4>2なので新規にスタック追加
↓
(((dd) 12) ((d) 4) ((c) 2) ((b a) 0)) ;; インデント12>4なので新規にスタック追加
ここで(e 4)がくると(d 4)までスタックを撒き戻すという意味です。
撒き戻すついでにreverseして整える。
↓
(((d (dd) e) 4) ((c) 2) ((b a) 0))
さらにeが終端なので連鎖して撒き戻し&reverseが発生する
(((c (d (dd) e)) 2) ((b a) 0))
↓
(((a b (c (d (dd) e))) 0))
=> (a b (c (d (dd) e)))
それで結果がこうなればいいんじゃないか、ということです。
でも 2 -> 12 -> 4とかのパターンだと
12を4とみなすとか例外作らないとだめかなあ。
>>650
早速ありがとうございます。
コード研究してみます。