私の講師は次のコードを提供しました:
(define (length list)
(cond (( null ? list) 0 )
(( atom ? list) 1 )
( else
( + 1 ( length (cdr list))))
しかし、それはコンパイルされず、Scheme は入力を待ち続けたので、私には見栄えがよくなるように書き直しましたが、括弧が 2 つ欠けていることに気付きました (Scheme に触れたのはこれが初めてであることに注意してください。私はそうではありません)。それをレイアウトして書く正しい方法を確認してください):
(define
(hello list)
(cond
(( null ? list) 0 )
(( atom ? list) 1 )
(else
(+1
( hello (cdr list))
)
)
)
)
hello
また、これが私のコード実行であることを明確にするために、名前を に変更しました。
ただし、実行すると次のエラーが発生します。
]=> (hello '(a b c))
;Unbound variable: ?
私の機能の何が問題になっていますか?