同像性
概述
同像性(Homoiconicity)指编程语言的程序和数据使用相同的表示形式,使得程序可以将其他程序作为数据来创建、修改和执行。LISP 是第一个具有同像性的主流编程语言。
关键内容
定义
字面意思是"相同的表示"(homo = 相同,icon = 表示)。在 LISP 中,程序和数据都使用 S-表达式 表示。
在 LISP 中的体现
- 函数调用
(+ 1 2)是一个列表 - 函数定义
(lambda (x) (* x x))同样是一个列表 - LISP 程序可以读取、分析、修改、执行其他 LISP 程序
带来的能力
- 宏系统:程序员可以编写在编译时执行的代码变换,实质上扩展语言本身
- 领域特定语言(DSL):在 LISP 内部创建新的"迷你语言"极为自然
- 元编程:程序操纵程序,水到渠成
现代回声
来源
- raw/books/计算机科学/05-mccarthy-lisp.md
相关
- LISP — 第一个具有同像性的语言
- S-表达式 — 同像性的基础
- eval 函数 — 利用同像性实现自解释
- John McCarthy — 通过 LISP 引入