如何配置一个 scheme 环境

· · 科技·工程

光剑中各种程序都是用 scheme 编写的。那么如何配置一个 scheme 环境呢?

首先我们要有一个解释器(编译器)。这里推荐 chez scheme。它是这个世界上编译速度最快、生成代码质量最高的 scheme 实现。

下载有很多方法。直接搜索就能找到 github 官方仓库(实测 bing 搜索结果的第一条就是)。更加便捷的方法,如果你是 Windows 用户,可以终端(powershell)中 winget install Cisco.ChezScheme,直接可以下载最新版的编译器。如果你用 Linux,相信命令行包管理器如何使用不需要我说。

然后就是下载和安装。注意源在 github 上,你可能需要使用一些手法以加速网络(比如说 proxy 或者镜像源)。

安装完毕之后文件会出现在 C:\Program Files\chez scheme a.b.c(注:a.b.c 是版本号)中(64 位程序。注意不要用 C:\Program Files (x86) 中的那个版本,因为是 32 位编译器)。将 C:\Program Files\Chez Scheme 10.2.0\bin\a6nt(默认是这样)或者类似的带有编译器可执行文件的目录设为环境变量。

之后你就可以在任何地方开启终端,使用 scheme 命令启动 scheme 编译器的 REPL 了!

scheme <filepath> 可以将 <filepath> 这个路径对应的文件中的所有代码加载到 REPL 中,并且立刻运行顶层的所有函数应用。

上面是编译器。我们还需要一个写代码的环境。

凑合着用用其实 vscode 就行,配置一下 coderunner(或者手动命令行写脚本也可以,反正就一行),下一个代码高亮的插件(随便搜就有)。

喜欢原教旨主义的人可以考虑 Emacs。

不过无论是 Emacs 还是 vscode,都推荐 paredit 插件。它可以帮助你“半结构化”地编辑代码。具体而言,开启了 strict mode 之后,你将不再能够编辑单独的括号。这可以防止一切括号匹配错误。paredit 提供了方便的快捷键,让你可以操纵光标所在的 S 表达式让它“吞掉”下一个 S 表达式或者“吐出”最后的 S 表达式: (1 2 3 4 5) => (1 2 3 4) 5 => (1 2 3) 4 5 或者 (+ 1 2) (* 3 4) => (+ 1 2 (* 3 4))