查看“︁Lisp 入門/第一章 基礎”︁的源代码
←
Lisp 入門/第一章 基礎
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
== 第一章 函数 == __TOC__ 这几章,我们会講解一下 lisp 的基本概念。在讲解基本概念之前,我们先要学会使用 Lisp 的解释器。解释器基本上是这个样子的:你给解释器一个表达式(也就是你在键盘上打字),而解释器显示这个表达式的值(就是给你一个答案)。 现在,往解释器里输入 42 这个数字,并且按回车键,看看解释器会给你什么反馈。 <syntaxhighlight lang="lisp"> 42 </syntaxhighlight> 解释器会返回同一个数: <pre> 42 </pre> === 数学表达式 === LISP 可以算数学题,不过,你要先学会 LISP 的表达方式才行。 比如 <pre> 1+2 </pre> 这个数学式子,在 LISP 中会表示为: <syntaxhighlight lang="lisp"> (+ 1 2) </syntaxhighlight> 也就是说,在 LISP 中,数学表达式要用括号括起来,并且运算符要放在第一个,运算数放在后面,中間用必要的空格隔開。上面表达式中的运算符,即第一个符号,称之为 '''操作符''',而其他的符号,称为 '''操作域'''。这种把操作符放在第一个位置的表达方式,称之为 '''前缀表示法''',也被叫做 '''波兰表示法'''。 你把上面的式子輸入到 LISP 解释器中,按下回车键看看會出現什麼現象。 数字 3 會出現 。 在 Common Lisp中,我們輸入一個式子,而Lisp的解譯器告訴我們結果。 这样,我们就拥有了一个计算器,那么,我们可以把玩一下这个计算器。比如,依次输入下列算式,看看结果是什么。 <syntaxhighlight lang="lisp"> (- 3 2) (* 6 7) (/ 8 6) </syntaxhighlight> 第一行的结果是 1,第二行的结果是 42。 第三行的结果竟然是 4/3。看来,LISP 还是很智能的,知道用分数来表示结果。 而且,即使再复杂点的数学表达式,LISP 也能计算。 <syntaxhighlight lang="lisp"> (+ 1 2 3 4) (* (+ 2 4) 7) </syntaxhighlight> === 函数的表达方式 === Lisp語言的是一種函數式語言。所谓函数是说,它的語句就像數學中的函數表達式的作用是一樣的。 雖然概念一樣,然而在表達上還是有些出入的。 在數學中,我們會這樣表示一個函數 <math> f(x) </math> 同样的函数,在Lisp中我們會這樣表示: <syntaxhighlight lang="lisp"> (f x) </syntaxhighlight> 在数学中,函数是一个函数名,后面跟着一个括号,括号里面装着参数。但在 LISP 中,整个函数表达式用括号括起来,第一个元素是函数的名称,后面跟着函数的参数。 如果是有兩個參數(在一些立體幾何的函數中就會有這樣的例子),比如 <math>z=f(x,y)</math> 聰明的你們應該可以猜出來是這樣寫的: <syntaxhighlight lang="lisp"> (f x y) </syntaxhighlight> 因为加法符號可以看成是一個二元函數,所以,我们可以这样寫: <pre> +(1,1) </pre> 那么,写成 LISP 的形式,就是 <syntaxhighlight lang="lisp"> (+ 1 1) </syntaxhighlight> 现在,你知道为什么数学表达式中运算符要放在最前面了吧。 複合函數如: <pre> f(g(x)) </pre> 在 LISP 中會寫成 <syntaxhighlight lang="lisp"> (f (g x)) </syntaxhighlight> 在Lisp中,表達式是很重要的概念。你每次输入的表达式,都会被求值。 我们可以尝试一下 LISP 中自带的函数 <syntaxhighlight lang="lisp"> (sqrt 9) </syntaxhighlight> sqrt 表示开方的意思,这句话的意思就是对9开方,返回的结果自然是3了。 <syntaxhighlight lang="lisp"> (log 16 2) </syntaxhighlight> 这句话表示求以2为底16的对数。 ===邏輯運算=== 邏輯運算,就是關於真假的運算,我們應該先習慣 LISP 的语法,那麼 3<4 該如何寫呢? <syntaxhighlight lang="lisp"> (< 3 4) </syntaxhighlight> 上面这个式子的结果是 <syntaxhighlight lang="lisp"> T </syntaxhighlight> 在 LISP 中,T 代表逻辑真,而 NIL 代表逻辑假。暂且不用太追究名称的由来,後面我會告訴你的。 接下来,尝试一个逻辑与表达式: <syntaxhighlight lang="lisp"> (and T T) </syntaxhighlight> 就是真且真為真。 或的英語翻譯是OR。 <syntaxhighlight lang="lisp"> (OR T NIL) </syntaxhighlight> 顺带告诉大家,在Lisp中大小寫不重要。 最後來個最複雜的 <syntaxhighlight lang="lisp"> (or (> 3 4) (> 4 2)) </syntaxhighlight> {{bookCat}}
该页面使用的模板:
Template:BookCat
(
查看源代码
)
返回
Lisp 入門/第一章 基礎
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息