6

假设 l 定义如下:

> (define l (list 1 2 3))

l 现在绑定到一个原子列表。

Little Schemer 介绍了一个简单的函数,叫做 lat? 根据参数作为原子列表的分类,其计算结果为 #t 或 #f。例如,

> (lat? l)

应该评估为#t,因为 l 是三个原子的列表。

但是,当被要求调用 lat? 时,我的方案解释器 ( repl.it ) 会引发错误。

> (lat? l)
Error: execute: unbound symbol: "lat" []

我假设纬度错了吗?对Scheme来说是原始的吗?

另外,如果是这种情况,请原谅转发。

4

2 回答 2

13

纬度?在本书的早期定义。请参见第 19 页。

(define lat?
  (lambda (l)
    (cond
      ((null? l) #t)
      ((atom? (car l)) (lat? (cdr l)))
      (else #f))))

这本书详细说明了一个函数需要做什么,以及它需要以一种可能需要习惯的对话方式生成哪些输出。

于 2016-02-24T20:54:15.390 回答
2

原来这是一个愚蠢的问题:文本要求读者设计一个定义。如果有人感兴趣,这里是答案:

(define lat?
  (lambda (l)
    (cond
      ((null? l) #t)
      ((atom? (car l)) (lat? (cdr l))
      (else #f))))
于 2016-02-24T20:54:31.673 回答