Lisp 入门/第一章 基础
第一章 函数
[编辑]这几章,我们会讲解一下 lisp 的基本概念。在讲解基本概念之前,我们先要学会使用 Lisp 的解释器。解释器基本上是这个样子的:你给解释器一个表达式(也就是你在键盘上打字),而解释器显示这个表达式的值(就是给你一个答案)。
现在,往解释器里输入 42 这个数字,并且按回车键,看看解释器会给你什么反馈。
42
解释器会返回同一个数:
42
数学表达式
[编辑]LISP 可以算数学题,不过,你要先学会 LISP 的表达方式才行。 比如
1+2
这个数学式子,在 LISP 中会表示为:
(+ 1 2)
也就是说,在 LISP 中,数学表达式要用括号括起来,并且运算符要放在第一个,运算数放在后面,中间用必要的空格隔开。上面表达式中的运算符,即第一个符号,称之为 操作符,而其他的符号,称为 操作域。这种把操作符放在第一个位置的表达方式,称之为 前缀表示法,也被叫做 波兰表示法。
你把上面的式子输入到 LISP 解释器中,按下回车键看看会出现什么现象。
数字 3 会出现 。
在 Common Lisp中,我们输入一个式子,而Lisp的解译器告诉我们结果。 这样,我们就拥有了一个计算器,那么,我们可以把玩一下这个计算器。比如,依次输入下列算式,看看结果是什么。
(- 3 2)
(* 6 7)
(/ 8 6)
第一行的结果是 1,第二行的结果是 42。 第三行的结果竟然是 4/3。看来,LISP 还是很智能的,知道用分数来表示结果。
而且,即使再复杂点的数学表达式,LISP 也能计算。
(+ 1 2 3 4)
(* (+ 2 4) 7)
函数的表达方式
[编辑]Lisp语言的是一种函数式语言。所谓函数是说,它的语句就像数学中的函数表达式的作用是一样的。 虽然概念一样,然而在表达上还是有些出入的。
在数学中,我们会这样表示一个函数
同样的函数,在Lisp中我们会这样表示:
(f x)
在数学中,函数是一个函数名,后面跟着一个括号,括号里面装着参数。但在 LISP 中,整个函数表达式用括号括起来,第一个元素是函数的名称,后面跟着函数的参数。
如果是有两个参数(在一些立体几何的函数中就会有这样的例子),比如
聪明的你们应该可以猜出来是这样写的:
(f x y)
因为加法符号可以看成是一个二元函数,所以,我们可以这样写:
+(1,1)
那么,写成 LISP 的形式,就是
(+ 1 1)
现在,你知道为什么数学表达式中运算符要放在最前面了吧。
复合函数如:
f(g(x))
在 LISP 中会写成
(f (g x))
在Lisp中,表达式是很重要的概念。你每次输入的表达式,都会被求值。
我们可以尝试一下 LISP 中自带的函数
(sqrt 9)
sqrt 表示开方的意思,这句话的意思就是对9开方,返回的结果自然是3了。
(log 16 2)
这句话表示求以2为底16的对数。
逻辑运算
[编辑]逻辑运算,就是关于真假的运算,我们应该先习惯 LISP 的语法,那么 3<4 该如何写呢?
(< 3 4)
上面这个式子的结果是
T
在 LISP 中,T 代表逻辑真,而 NIL 代表逻辑假。暂且不用太追究名称的由来,后面我会告诉你的。
接下来,尝试一个逻辑与表达式:
(and T T)
就是真且真为真。
或的英语翻译是OR。
(OR T NIL)
顺带告诉大家,在Lisp中大小写不重要。
最后来个最复杂的
(or (> 3 4) (> 4 2))