私はバイナリ検索ツリーに要素を挿入するための簡単な手順をLispで書こうとしています。Lispでのリストの問題
Iをリストとしてツリー表される:
- をツリー内の最初の要素はルート
- 第二要素は第三の要素は右サブ左サブツリー
- ありますツリー
これは私のコードです:
(define Insert
(lambda (x T)
(if (null? T)
(list x '() '())
(if (> x (car T))
(list (car T)
(cadr T)
(Insert x (list (caddr T))))
(list (car T)
(Insert x (cadr T))
(list (caddr T)))))))
(Insert 2 '(4 '(2 '() '()) '()))
のようなプロシージャを呼び出すと、2番目の引数が実数ではないため ">"に問題が発生しますが、理由はわかりません。
例外:しかし
>: expects type <real number> as 2nd argument, given: quote; other arguments were: 2
、私はこのようなプロシージャを呼び出す:それが正常に動作します 、。
なぜですか?
私は'(1 '() '())
と(list 1 '() '())
が等しいことを知っていますか?
ありがとう、私は内部引用符をドロップすると動作します:) –
また、Lispの 'nil'はSchemeの' '()です。 – erjiang
@erijang:ああ、私はnilと()は同じだと思ったが、nilと#fは違っていた。 – Vatine