私は SICP を使用しています。演習の 1 つで、リスト内の 3 つの大きな数値のうち 2 つのリストを作成する必要があります。関数を使用しようとしていますsort
が、関数内で使用するとエラーが発生します:
The object z, passed as the first argument to integer-less?, is not the correct type.
機能は次のとおりです。
(define (myList x y z)
(drop (sort '(x y z) <) 1))
インタープリターで 2 行目を実行すると (実際の値を変数に置き換えて) 正常に動作しますが、関数を使用しようとすると失敗します。私は scheme/lisps に慣れていないので、リストがどのように機能するかについてはあまり詳しくありませんが、それと関係があると推測しています。私は Lisp がリンクされたリストを使用していることを知っているので、最後の要素に到達し、その後何をすべきかわからないことに関係があるのではないかと考えています。
どんな助けでも大歓迎です!
編集:
実行してみました:
(define x 4)
(define y 10)
(define z 2)
(drop (sort '(x y z) <) 1)
同じエラーが発生しました。