../mal-setup

Make A Lisp[setup]-起步

Published:

pl lisp 瞎折腾

生命不息, 折腾不止.

缘起, 在 github 上发现一个很有趣的项目, mal, 10步即可打造一个可以 Self-Hosting(自举, 即自身解释执行自身)的 lisp 解释器. 恰巧鄙人对 编程语言 比较感兴趣, 恰巧有这么一个项目, 不如跟随先驱者的脚步, DO IT.

废话

实际上在本文书写之时, 我的 lisp 解释器已近尾声, 仅自举未曾实现, 前 8 step 已经实现(除了少量输出相关测试没有完美通过). 相较于另外一个 java 版本实现, 各有特点, 遂决定重写解释器实现, 就个中实现的个人理解稍作记录.

准备工作.

Pick a language

参照原项目的 pick-a-language 挑选一门语言, -> Java , 无他, 对此最熟悉.

Getting started

参照 getting-started 实现原则: 不依赖 mvn 等构建工具, 不依赖第三方包, 只考虑用 Jdk8 内部库, 使用内置工具进行构建执行. 实现思路; repo 作者推荐以 10 steps 完成此项目, 经过初步观察, 如 java, kotlin, clojure等实现 10 个步骤的实现在同一个包内, 经试验, 由于实现的过程无法避免的会改动原有步骤的依赖, 导致部分老步骤的代码需要同步修改. 鉴于此, 个人采用每个步骤使用一个新 package 来解决. 当然合理的分支策略也可以, 此处不表.

PR 如下. step-setup

USE

cd java2
make setup.class

export STEP="setup"
./run

有输出即正常

也就是 makefile 初次接触需要时间学习一下.