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))