练习环境搭建
sudo apt-get install mit-scheme
进行安装过程,注意看最后两行提示
update-alternatives: 使用 /usr/bin/mit-scheme-x86-64 来在自动模式中提供 /usr/bin/mit-scheme (mit-scheme) update-alternatives: 使用 /usr/bin/mit-scheme-x86-64 来在自动模式中提供 /usr/bin/scheme (scheme)
这里区分mit - scheme 和 scheme。
cd /usr/bin
执行
mit-scheme-x86-64
测试
1 ]=> (+ 1 2) ;Value: 3
可以使用。
视频图书资料收集
视频,B站UP主:不稳固的支点。https://www.bilibili.com/video/av8515129
书籍,计算机程序的构造和解释。https://book.douban.com/subject/1148282/
不过碍于自己基础薄弱,故先以,基础为主
1、The Little Schemer。入门第一步。https://book.douban.com/subject/27080946/
2、《Yet Another Scheme Tutorial》是一本Scheme入门教程,
由大神Death King翻译了放在网上。http://deathking.github.io/yast-cn/
3、Githud 地址。https://github.com/DeathKing/Learning-SICP/
MIT - Scheme 基本使用
在交互式执行方式下,系统(启动后)将在一个窗口显示版本信息,最后是提示符:
1 ]=>
键入的程序代码将显示在提示符之后。
此时系统执行 read-evaluation-print 循环(读入-求值-打印循环,REPL),可以键入符合 Scheme 语法要求的表达式(程序),要求系统对其求值。表达式中可以任意换行。一旦系统读到一个完整的表达式,就会对它求值(计算),并打印出求得的值。
Scheme 不区分标识符中的大写和小写,define 和 DEFINE,Define 同样对待。
启动后的提示符 1 ]=> 中的数字 1 表示当前系统运行在第一层“读入-求值-打印循环”。
如果求值中出错,系统将进入更高层次的“读入-求值-打印循环”,也是系统的出错处理循环。
在出错循环中仍然可以像在第一层循环一样使用 Scheme 系统,还可以做一些其他事情(参看 Scheme 文档)
退出一层或多层“读入-求值-打印循环”:
可以用 Ctrl-u 组合键退出一层求值循环,用 Ctrl-g 退到第一层循环。
中断执行:
- 组合键 Ctrl-g:杀掉正在进行的求值并回到第一层 REPL
- 组合键 Ctrl-x:杀掉正在进行的求值并回到当前 REPL
- 组合键 Ctrl-u:杀掉正在进行的求值并回到上一层 REPL
- 组合键 Ctrl-b:暂停当前求值进入断点 REPL。可以用 (continue) 唤醒中断的执行
Scheme 文件操作
编辑和装入程序文件:
如果程序比较长,可以用系统外的编辑器编写好程序源文件,而后用 load 函数装入系统。
下面是一个用绝对路径的实例:
1 ]=> (load "e:\temp\test1.scm")
求值这个表达式,可以看到文件装入的信息。load 函数还可以装入编译好的程序文件,详情见 Scheme 文档 “MIT Scheme User's Manual” 的 “3.2 Loading Files”。
用函数 cd 可以转换当前工作目录。下面是一个实例:
1 ]=> (cd "e:\temp")
此后就可以直接用文件名装入这个目录下的文件了。
保存和恢复系统映像:
可以将 Scheme 系统的当前运行现场保存起来,以便将来回复这个现场。这样保存的现场称为一个“world image”或者一个“band”。实际上,Scheme 启动时也就是装入了一个默认的 band,装入编译器的启动方式就是装入另一个 band。
函数 save-disk 将当前现场存入文件。下例将现场存入当前目录下的文件 image1:
1 ]=> (disk-save "image1")
函数 disk-restore 恢复原保存在一个文件里的现场:
1 ]=> (disk-restore "image1")
参考资料:知乎@Clement Li。https://zhuanlan.zhihu.com/p/34313034
http://www.math.pku.edu.cn/teachers/qiuzy/progtech/scheme/MIT_Scheme_doc/index.html