- LISP 教程
- LISP - 首页
- LISP - 概述
- LISP - 环境
- LISP - 程序结构
- LISP - 基本语法
- LISP - 数据类型
- LISP - 宏
- LISP - 变量
- LISP - 常量
- LISP - 运算符
- LISP - 决策
- LISP - 循环
- LISP - 函数
- LISP - 谓词
- LISP - 数字
- LISP - 字符
- LISP - 数组
- LISP - 字符串
- LISP - 序列
- LISP - 列表
- LISP - 符号
- LISP - 向量
- LISP - 集合
- LISP - 树
- LISP - 哈希表
- LISP - 输入与输出
- LISP - 文件I/O
- LISP - 结构体
- LISP - 包
- LISP - 错误处理
- LISP - CLOS
- LISP 有用资源
- Lisp - 快速指南
- Lisp - 有用资源
- Lisp - 讨论
Lisp - 程序结构
LISP 表达式称为符号表达式或 s-表达式。s-表达式由三个有效对象组成:原子、列表和字符串。
任何 s-表达式都是一个有效的程序。
LISP 程序要么在解释器上运行,要么作为编译代码运行。
解释器在重复循环中检查源代码,这也被称为读取-评估-打印循环 (REPL)。它读取程序代码,对其进行评估,并打印程序返回的值。
一个简单的程序
让我们编写一个 s-表达式来查找三个数字 7、9 和 11 的总和。为此,我们可以在解释器提示符下输入。
; execuate sum of three numbers (+ 7 9 11)
LISP 返回结果 -
27
如果您想将同一个程序作为编译代码运行,则创建一个名为 myprog.lisp 的 LISP 源代码文件,并在其中键入以下代码。
main.lisp
; print sum of three numbers (write (+ 7 9 11))
输出
当您单击“执行”按钮或键入 Ctrl+E 时,LISP 会立即执行它,并且返回的结果为 -
27
LISP 使用前缀表示法
您可能已经注意到 LISP 使用前缀表示法。
在上面的程序中,+ 符号用作求和过程的函数名。
在前缀表示法中,运算符写在其操作数之前。例如,表达式,
a * ( b + c ) / d
将写成 -
; prefix mode operation (/ (* a (+ b c) ) d)
让我们再举一个例子,让我们编写将 60o F 的华氏温度转换为摄氏温标的代码 -
此转换的数学表达式将为 -
(60 * 9 / 5) + 32
创建一个名为 main.lisp 的源代码文件,并在其中键入以下代码。
main.lisp
; evaluate and print arithmetic expression (write(+ (* (/ 9 5) 60) 32))
输出
当您单击“执行”按钮或键入 Ctrl+E 时,LISP 会立即执行它,并且返回的结果为 -
140
LISP 程序的评估
LISP 程序的评估分为两个部分 -
由读取程序将程序文本转换为 Lisp 对象
由评估程序根据这些对象实现语言的语义
评估过程执行以下步骤 -
读取器将字符字符串转换为 LISP 对象或s-表达式。
评估器定义由 s-表达式构建的 Lisp形式的语法。这第二个级别的评估定义了一个语法,该语法确定哪些s-表达式是 LISP 形式。
评估器充当一个函数,它以有效的 LISP 形式作为参数并返回一个值。这就是我们将 LISP 表达式放在括号中的原因,因为我们将整个表达式/形式作为参数发送给评估器。
“Hello World”程序
学习一门新的编程语言,直到你学会了用这种语言向全世界打招呼,才算真正开始,对吧!
因此,请创建一个名为 main.lisp 的新源代码文件,并在其中键入以下代码。
main.lisp
; print Hello World (write-line "Hello World") ; print the statement (write-line "I am at 'Tutorials Point'! Learning LISP")
输出
当您单击“执行”按钮或键入 Ctrl+E 时,LISP 会立即执行它,并且返回的结果为 -
Hello World I am at 'Tutorials Point'! Learning LISP