学习 scheme 有哪些资源推荐？
谢邀 Racket 是 Scheme 的方言, 差别和原来 Scheme 已经比较大, 如果追求单纯的 Scheme 的话可以忽略,不过 Racket 是一个很有活力和前沿的语言, 在不少的程序设计入门课到程序设计语言课都有用到, 不少的研究也在上面展开, 工业上虽然用的人不多, 但是库还是蛮多的, 前段时间 John Carmack对 Racket 赞赏有嘉, 要用 Racket 写 VR 的脚本. 关于实现的挑选, Andy Wingo 有篇很不错的 Blog:  An opinionated guide to scheme implementations, 而且他 Blog 里包含不少 Guile, v8 实现的细节, 值得关注. 别的答案里提到的 readscheme.org 内容太多, 直接看会没有什么头绪. (UPDATE: readscheme.org 这个网站不维护了想看的话可以用 Internet Archive 或者到其他人做的备份里看) 真正学习 Scheme 的途径就三个字: 写实现!考古工作可以看下 Lambda Papers,  就是传说中的 Lambda: the ultimate xxoo, 不过古老的Scheme 跟现在的有些差别需要靠脑洞去填补. 要写实现深入了解语言是必须的 The Scheme Programming Language, R*RS都可以看, 个人倾向于实现 R5RS 和 R7RS. 具体到 Parsing 部分可以看 EOPL 里那个工具, 新潮点可以自己写一个 Parser Combinator. 到中后端部分, 实现方式很多, 最简单的树解析器,  可以看 Peter Norvig 那两篇;  元循环解释器, SICP ch4 里面有一个, 最简单的是PG 的 The Root of Lisp. 花样多的就是写编译器到各种 target: 编译到 C 可以参考 Chicken, Chicken Internal 那系列的文章解释得很不错, 包含 runtime, gc 的实现细节, 最原始编译到 C 的思路源自: CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A; 编译到 x86(_64) 可以参考王垠的 yscheme 或者上面提到的 Chicken 另外一个实现 Bones, 其他可以 target 的 IR 也很多 LLVM IR, Java bytecode, CIL, Lua VM,  JavaScript, WebAssembly, Graal/Truffle, SKI, 各种抽象机 etc. etc. , 可以加 JIT, 或者用 RPython 实现, 喜欢玩的可以自己实现 VM. 编译到 IR 的过程中会用到 CPS变换, 就可以用上传说中40行代码,书的话可以参考 Lisp In Small Pieces, Compiling with Continuation, 还有 Scheme 里面很重要的特性 continuation 的实现可以看Three Implementation Models for Scheme. 搞多 target 或者优化的的话编译器的架构设计不能一坨了, 这个可以参考 Andrew W. Keep 的nanopass framework, 还有篇 An Incremental Approach to Compiler Construction (UPDATE: chez scheme 开源了, 也可以参考) Macro 的实现也有好多 paper, 实现完之后就可以玩各种语言范式, 或者 SRFI, SICP ch4 那个逻辑语言, minikanren, OO 的话实现 CLOS, MetaObject Protocol, 或者可以学 Shen 一样内置个 Prolog 用来做类型推导然后自带类型系统, 用 macro 实现类型系统 etc. etc. 差不多就是这样, Lisp 系的玩法还是好多的.