Lisp 编程/Lisp 入门
外观
< Lisp 编程
Lisp 的语法非常简单,易于理解。一个列表是一系列用圆括号括起来的原子,列表的第一个原子是一个函数。第一个原子之后的任何原子都是该函数的参数。一个示例 Lisp 表达式,用于将数字 1 和 2 相加,可能看起来像这样
(+ 1 2)
如您所见,该表达式是一个列表。第一个原子是 +,它也是要计算的函数。1 和 2 是 + 函数的参数。
您还可以像这样将列表用作函数的参数,它将数字 1 和 2 相加,但稍微花哨一些
(+ 1 (+ 1 1))
在这个例子中,+ 函数的第二个参数是一个列表。第一个原子是一个函数:+。所以内部列表被计算为 2(1+1=2),然后该结果被用作外部列表的第二个参数,然后给出结果 3。
当然,Lisp 中还有许多其他函数。一些最基本的函数是:+、-、/、*、quote、set 和 cons。+、-、* 和 / 函数的功能和工作原理应该很明显。
quote 函数返回它的第一个参数,不进行求值。这对于将一个形式(表达式)传递给函数,而不首先计算该形式(表达式)非常有用。
(quote (param1 param2))
将返回
(param1 param2)
quote 也可以缩写为 '。' 位于它作用于的列表的“外部”。所以
'(param1 param2)
将返回
(param1 param2)
就像第一个例子一样。
cons 函数通过向列表添加项目来构建列表。向空列表 '() 添加项目会创建一个新列表。
(cons 1 '())
返回
(1)
(cons 1 (cons 2 (cons 3 '())))
返回
(1 2 3)
Lisp 的许多属性都源于列表是由 cons 构建的事实。
在 Lisp 中,有几种方法可以设置变量。以下是最常见的几种方法。
Setq 将变量设置为给定值。如果变量不存在,则创建它。所有使用 setq 创建的变量都是全局变量。Setq 的工作方式如下
(setq variable-name <value>)
使用 setq 的示例代码段如下
(setq camel "I am a camel!") (print camel)
它应该在执行时打印“我是一只骆驼!”。