View on GitHub

Yoy-wiw

A website on lisp.

Download this project as a .zip file Download this project as a tar.gz file

咱也学学Lisp(2)--列表

29 Sep 2012

原文见:http://lisp.plasticki.com/

Lisp就是针对列表的语言,列表是什么?就是用小括号括起来的各种东东。

(16 25 36 49 64 81)

这个 () 也是列表,是空表,也可以表示为nil,也称为假。

前面提到的 (+ 8 100 2 9) 也是列表,列表中的第一个元素是一个函数,其余的元素是数。

Lisp是如何计算(或求值)的呢?拿来一个列表,把第一个元素当成函数,其余的元素当成这个函数的参数,让这个函数计算它的值。如果第一个参数不是函数呢?那就无法求值。

list函数可以构造一个列表。

CL-USER> (list 4 5 9)

(4 5 9)

列表中的元素可以还是列表:

CL-USER> (list (list 4 5) 9)

((4 5) 9)

列表中的元素可以是表达式:

CL-USER> (list (- 4 5) 9)

(-1 9)

为什么不是 ((- 4 5) 9) ?因为Lisp自动对 (- 4 5) 进行求值,得到 -1 。别忘了减号是函数哦。

试试用list做一个更复杂的吧。

CL-USER> (list 1 (list (list 3) (list 4 5 9)) (list (list (list 4 4) 44) 444))