我的讲师提供了以下代码:
(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: ?
我的功能有什么问题?