拉特? Scheme中的原始函数?

时间:2016-02-24 20:43:05

标签: scheme the-little-schemer

假设l定义如下:

> (define l (list 1 2 3))

现在绑定到原子列表。

Little Schemer引入了一个名为lat的简单函数?它根据参数的分类作为原子列表来计算#t或#f。例如,

> (lat? l)

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

但是,当我被要求拨打lat时,我的方案解释器(repl.it)会抛出错误。

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

我在假设lat时错了吗?对于Scheme来说是原始的吗?

另外,请原谅重新发布的情况。

2 个答案:

答案 0 :(得分:9)

LAT?在本书的早期定义。见第19页。

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

本书详细说明了功能需要做什么以及需要以可能需要习惯的会话方式生成的输出。

答案 1 :(得分:1)

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

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