のは、この変換を使用してみましょう:
(cons a b) = /\ and empty = .
a b
まず、我々は二つのリストがあります:二つのリストに
cons
を使用して
(list 1 2) = (cons 1 (cons 2 empty)) = /\
1 /\
2 .
(list 3 4) = (cons 3 (cons 4 empty)) = /\
3 /\
4 .
が与える:
リストを使用して
(cons (list 1 2) (list 3 4)) = (cons (cons 1 (cons 2 empty))
(cons 3 (cons 4 empty)))
= /\
/\ /\
1 /\ 3 /\
2 . 4 .
を与える:
(list (list 1 2) (list 3 4)) = (cons (cons 1 (cons 2 empty))
(cons (cons 3 (cons 4 empty))
empty
= /\___
/\ /\
1 /\ /\ .
2 . 3/\
4 .
SICPの108ページでは、ツリーのリストとして表されるツリーがあると想定しています。 これは、cons
がツリーの作成に使用されていないと仮定しています。
彼らは翻訳を使用します。
empty = .
(list a) = |
a
(list a b) = /\
a b
(list a b c) = /|\
abc
彼らの例
(list (list 1 2) 3 4) = /|\
/\3 4
1 2
空のリストが例ではありませんでしたので、私たちが使用していません。図の中にある。
簡潔に:cons
とempty
で構築された一般的なデータ構造を描くのにSICPの表記法を使用することはできません。
あなたの質問は何ですか? –
Ah。私はこの質問がhttp://stackoverflow.com/q/28401857/465378の複製であると思う。 –
しかし、なぜSICPの著者はバイナリの代わりに三元ツリーを使って画像を描くのだろうか? 108ページhttp://web.mit.edu/alexmv/6.037/sicp.pdf – Anatoly