Lisp(全称 LISt Processor)是一种历史悠久的编程语言家族,以其独特的符号计算和函数式编程特性闻名。以下是其核心概念和基础语法
1. Lisp 特点
- 基于列表:代码和数据均用链表结构表示,语法高度统一。
- 函数式编程:强调不可变数据和递归,支持高阶函数。
- 动态类型:变量无需声明类型,运行时确定。
- 宏系统:允许编写代码生成代码,实现语法扩展。
- 交互式开发:REPL(Read-Eval-Print Loop)环境快速测试代码。
2. 基础语法
2.1 表达式结构
Lisp 使用前缀表示法(括号包围),形式为:
(函数名 参数1 参数2 ...)
例如:
(+ 2 3) ; 输出 5(等价于 2 + 3)
(* 4 (+ 1 2)) ; 嵌套表达式,输出 12
2.2 基本数据类型
| 类型 | 示例 |
|------------|-------------------|
| 整数 | 42
, -7
|
| 浮点数 | 3.14
|
| 字符串 | "Hello"
|
| 符号 | 'foo
, 'x
|
| 列表 | '(1 2 3)
|
| 布尔值 | t
(真), nil
(假/空) |
2.3 常用操作
-
定义变量:
(setq x 10) ; 全局变量 (let ((y 20)) ; 局部变量 (+ x y))
-
定义函数:
(defun square (n) (* n n)) (square 5) ; 输出 25
-
条件判断:
(if (> x 0) "正数" "非正数")
-
循环(递归实现):
(defun factorial (n) (if (<= n 1) 1 (* n (factorial (- n 1)))))
-
列表操作:
(car '(1 2 3)) ; 取头部 → 1 (cdr '(1 2 3)) ; 取剩余部分 → (2 3) (cons 0 '(1 2)) ; 构造新列表 → (0 1 2)
3. 代码示例
计算列表平均值:
(defun average (lst)
(/ (apply #'+ lst) (length lst)))
(average '(10 20 30)) ; 输出 20
4. 主要方言
- Common Lisp:通用标准,功能丰富。
- Scheme:简洁,强调函数式编程。
- Clojure:基于JVM,支持并发编程。
5. 学习建议
- 从 交互式REPL 开始练习基础表达式。
- 掌握 递归思维(替代传统循环)。
- 理解 S-表达式(代码即数据)的哲学。
Lisp 的简洁性和强大宏系统使其在AI、符号处理等领域仍有广泛应用。
(本文来源:nzw6.com)