- 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 (Common Lisp Object System)
- LISP 有用资源
- Lisp - 快速指南
- Lisp - 有用资源
- Lisp - 讨论
Lisp - 基本语法
LISP 中的基本构建块
LISP 程序由三个基本构建块组成:
原子
列表
字符串
原子是数字或连续字符的字符串。它包括数字和特殊字符。
以下是某些有效原子的示例:
hello-from-tutorials-point name 123008907 *hello* Block#221 abc123
列表是由原子和/或其他列表组成的序列,括在括号中。
以下是某些有效列表的示例:
( i am a list) (a ( a b c) d e fgh) (father tom ( susan bill joe)) (sun mon tue wed thur fri sat) ( )
字符串是用双引号括起来的字符组。
以下是某些有效字符串的示例:
" I am a string" "a ba c d efg #$%^&!" "Please enter the following details :" "Hello from 'Tutorials Point'! "
添加注释
分号符号 (;) 用于指示注释行。
例如:
main.lisp
(write-line "Hello World") ; greet the world ; tell them your whereabouts (write-line "I am at 'Tutorials Point'! Learning LISP")
输出
单击“执行”按钮或键入 Ctrl+E 时,LISP 会立即执行它,并返回以下结果:
Hello World I am at 'Tutorials Point'! Learning LISP
在进入下一部分之前的一些重要事项
以下是一些需要注意的重要事项:
LISP 中的基本算术运算符是 +、-、* 和 /
LISP 将函数调用 f(x) 表示为 (f x),例如 cos(45) 写作 (cos 45)
LISP 表达式不区分大小写,cos 45 或 COS 45 是相同的。
LISP 会尝试评估所有内容,包括函数的参数。只有三种类型的元素是常量,并且始终返回它们自己的值
数字
字母 t,代表逻辑真。
值 nil,代表逻辑假,以及空列表。
关于 LISP 表达式的更多信息
在上一章中,我们提到 LISP 代码的求值过程包含以下步骤。
阅读器将字符字符串转换为 LISP 对象或s-表达式。
求值器定义 Lisp 表达式的语法,这些表达式由 s-表达式构成。此第二级求值定义了一个语法,用于确定哪些 s-表达式是 LISP 表达式。
现在,LISP 表达式可以是:
原子
空列表或非列表
任何以符号作为其第一个元素的列表
求值器作为一个函数工作,它接受一个有效的 LISP 表达式作为参数并返回一个值。这就是我们将LISP 表达式放在括号中的原因,因为我们将整个表达式/形式作为参数发送给求值器。
LISP 中的命名约定
名称或符号可以包含任意数量的字母数字字符,但不能包含空格、开括号和闭括号、双引号和单引号、反斜杠、逗号、冒号、分号和竖线。要在名称中使用这些字符,需要使用转义字符 (\)。
名称可以包含数字,但不能完全由数字组成,因为那样它将被读取为数字。类似地,名称可以包含句点,但不能完全由句点组成。
单引号的使用
LISP 会评估所有内容,包括函数参数和列表成员。
有时,我们需要按字面意思取原子或列表,并且不希望将其评估或视为函数调用。
为此,我们需要在原子或列表前加上单引号。
以下示例演示了这一点。
创建一个名为 main.lisp 的文件,并将以下代码输入其中。
main.lisp
(write-line "single quote used, it inhibits evaluation") (write '(* 2 3)) (write-line " ") (write-line "single quote not used, so expression evaluated") (write (* 2 3))
输出
单击“执行”按钮或键入 Ctrl+E 时,LISP 会立即执行它,并返回以下结果:
single quote used, it inhibits evaluation (* 2 3) single quote not used, so expression evaluated 6