4. Toys

本章概要:

使读者了解scheme语言的一些基本概念和一些常用函数,为接下来的章节打基础。

4.1. 基本概念

  • S表达式: scheme中所以元素都可以叫做S表达式。
  • atom: 原子,是指一个非列表的S表达式。
  • list: 列表,用 (... ...) 包围起来的S表达式。

4.2. 常见函数

  • car: 返回非空列表中的首个S表达式,

    所以它操作的对象一定要是非空的列表(十戒第一条)。

  • cdr: 取出非空列表中的除首个S表达式的列表,

    它操作的对象也是要非空列表(十戒第一条)。

  • cons: 将两个S表达式连接成一个列表,第二个必须是一个列表。

  • null?: 只判断列表是否为空(scheme五律第四条)。

  • atom?: 用来判断一个S表达式是否为一个原子。

    (define atom?
      (lambda (m)
        (and (not (pair? m)) (not (null? m)))))
    
  • eq?: 用来判断两个非数字的的原子是否相等。

    小技巧

    guile的实现不太一样,它还可以比较数字。

4.3. 其它概念

  • define: 用来定义一个名称,或者一个函数。
  • lambda: 用来定义一个函数。
  • cond: 相当于其它语言中的switch。
  • else: 永远返回#t, 即true。