今天,我们继续进行有关如何配置我的新计算机的最近一系列练习。ChezScheme是一个出色的Scheme编译器/解释器,速度非常快,而且非常无错误,但它包含的库有限,因此用户必须创建自己的库。本说明描述了我使用的一些库。
主库是我的《标准前奏曲》,在https://programmingpraxis.com/standard-prelude网站,每次Chez Scheme启动时加载。Chez Scheme驻留在/usr/local/bin中名为Scheme和petite的两个可执行文件中。我提供了一个shell脚本/usr/local/bin/chez,它在交互式系统启动过程中加载scheme(完整编译器)和Standard Prelude:
#! /usr/local/bin/scheme; 标准序曲(加载“~/scheme/lib/preflede.ss”); 识字编程(加载“~/scheme/lib/tangle.ss”); 交互式编辑(定义*edfile*#f)(定义(加载参数)(当(对?参数)(设置!*edfile*(汽车参数)))(当(不是*edfile*)(错误为'lload“找不到文件”))(when(not(file exists?*edfile*)(error'lload“file not found”(未找到文件))(let*((ss(tangle*edfile*))(i(open-input-string ss)))(let循环((obj(读取i)))(if(eof-object?obj)(闭合输入端口i)(开始(eval obj(交互环境))(循环(读i))))(定义(ed.args)(当(配对参数)(设置!*edfile*(汽车参数)))(当(不是*edfile*)(错误'ed“找不到文件”))(系统(字符串附加“ed”*edfile*))(加载*编辑文件*)(定义(vi.args)(当(配对参数)(设置!*edfile*(汽车参数)))(当(不是*edfile*)(错误“vi”找不到文件“))(系统(字符串附加“vi”*edfile*))(lload*edfile*))(定义(sh.args)(系统(如果(null?args)“sh-l”(字符串连接#\space args))(如果#f#f)); 回家吧(cd“~/方案”)
上述网页提供了标准前奏曲的文档。对于散列表、结构和随机数,我遵从Chez Scheme,而不是使用我的标准前奏曲中的版本,对于Chez Schema本身提供的标准前导曲函数,我也遵从Chez Sheme。《标准前奏曲》中唯一没有加载的部分是avl树,这些树会被移到它们自己的库中。在每次运行Chez Scheme时都会加载我的有文化的编程环境,请参阅https://programmingpraxis.com/2010/08/10/literate-programming和我的交互式编辑环境描述于https://programmingpraxis.com/2017/04/07/edit-files-in-a-repl。
我之前在博客中没有讨论的唯一一件事是第页
命令。在我的台式计算机上,屏幕足够大,我可以同时打开Scheme REPL和系统外壳窗口,并根据需要在它们之间移动。在我的平板电脑上,屏幕太小了,所以可以方便地快速退出系统shell,执行一些命令,然后返回REPL。这个第页
命令(不带参数调用)打开登录shell,并在退出时返回REPL;使用参数调用,它执行参数指定的命令,然后立即返回REPL。这个(如果#f#f)
函数结束是返回的标准方式空隙
来自函数;这里使用它来抑制返回代码第页
正常返回。
我经常使用的其他库出现在下面的页面上;所有这些都存储在~/scheme/lib中,并由加载(加载“~/scheme/lib/xxx.ss”)
:
avl.ss—avl树priqueue.ss—优先级队列textfile.ss——文本文件数据库的输入、处理和输出pregexp.ss——Dorai Sitaram的可移植正则表达式匹配器streams.ss--SRFI-41流-惰性列表(我是作者)match.ss—Kent Dybvig的模式匹配器
我的正常习惯是在解释器中使用当前目录设置为~/scheme。我为每个项目创建一个目录,然后使用(加载“项目/xxx.ss”)
加载项目文件xxx.ss(xxx.ss)
输入解释器,然后使用(ed)或(vi)编辑文件。目录~/scheme没有文件,只有项目目录。
如果您是Scheme用户,您的任务是在系统上实现此环境,或者描述您自己的编程环境。完成后,欢迎您在下面的评论中讨论该练习。
页:1 2 三 4 5 6 7 8 9 10