MIT Scheme 的基本使用

安装和启动

启动

在 Windows 下正确安装 MIT Scheme 系统后,程序菜单里将有一个 MIT Scheme 目录,其中包含:
Documentation:以浏览器方式打开 HTML 形式的 Scheme 文档
MIT GNU Scheme:Edwin 环境下启动 Scheme。Edwin 是一个类似 emacs 的编辑器
如果喜欢用命令行交互方式,可以用下述命令建一个快捷命令,放在你的桌面或者命令菜单里。注意将目录修改为你的系统安装目录:
"C:\Program Files\MIT-GNU Scheme\bin\scheme.exe" --library "C:\Program Files\MIT-GNU Scheme\lib"
Edwin系统的退出

C-x z (表示按 Ctrl-x 后按 z 键):从 Edwin 中退到 Scheme 的命令交互状态。此时 Edwin 挂起,可用 (edit) 唤醒挂起的 Edwin,回到挂起前的状态。
C-x c :停止 Edwin 并回到 Scheme 的命令交互状态。

C-x C-z:停止 Edwin 并挂起 Scheme 系统。再次启动 Scheme 将唤醒挂起的 Scheme 系统,回到挂起前的系统状态。

C-x C-c:停止 Edwin 和 Scheme 系统。

从交互循环进入 Edwin

在交互方式下执行 (edit) 或 (edwin),将启动或返回 Edwin
交互式执行中退出

在提示符下键入下面表达式并回车:
n ]=> (exit)

系统将要求确认。这样退出后所有在 Scheme 里已经做的事情都将丢掉了。

基本使用:

命令行交互方式下回车,如果已输入了一个完整表达式,系统就会对其求值并输出结果
在 Edwin 里 C-x C-e 求值光标左边的一个完整表达式,M-z 求值光标当时位于其中的整个定义式(一个定义式也就是一个表达式,其左括号从最左边开始)

命令行交互方式下的基本使用

Edwin方式下的基本使用

MIT-GNU-Scheme 文档

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")

阅读 MIT Scheme 文档:

“MIT Scheme Reference” 介绍 MIT Scheme 的详细功能,“MIT Scheme User‘s Manual” 介绍 MIT Scheme 的使用。“SOS Reference Manual” 介绍的 SOS 是 Scheme 的一个对象系统,“IMAIL User‘s Manual” 介绍的 IMAIL 是用 Scheme 做的一个邮件阅读器。下面简单介绍与前两个文档有关的若干问题。
MIT Scheme 手册的主要内容是介绍这个 Scheme 系统提供的功能,包括预定义的变量(variable)、特殊形式(special form)和过程(procedure,函数)。例如

过程的实例:
procedure: eqv? obj1 obj2
过程名是 eqv?,取两个参数。使用的例子: (eqv? 3 2)
procedure: list object ...
过程名是 list,取 0 个或任意多个参数。用例: (list 1 2 3 4)

特殊形式的实例:
special form: lambda formals expression expression ...
特殊形式,名字是 lambda,后面应有一个参数表和一个或多个表达式。
用例: (lambda (x y) (+ x y))

===
命令行方式下的使用

基本使用

在交互式执行方式下,系统(启动后)将在一个窗口显示版本信息,最后是提示符:
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) 唤醒中断的执行

===
*其他详见评论
转抄自:http://www.cnblogs.com/Henrya2/archive/2009/02/21/1395615.html,特此感谢

时间: 2024-11-10 14:32:10

MIT Scheme 的基本使用的相关文章

slime for mit scheme

很多人写过 Scheme 开发环境的设置.但 Scheme 毕竟是一种 Lisp ,是 Lisp 就应该用 Slime. Chicken Scheme 有一个扩展叫 Chicken Slime, 安装非常简单,但功能极差.安装之后几乎没用. Slime本身带的,contrib目录下的swank-kawa.scm swank-larceny.scm swank-mit-scheme.scm 一个都不能用. 好在这位先生修复了对Mit Scheme的支持.照他指导安装就可以用了. 但他说 "也可以将

为mit scheme添加for循环语句

Mit-Scheme不支持syntax-case, 只能用它的er-macro-transformer来编写.Mit-Scheme的宏系统比较低级,不支持模式匹配和literal. 使用pmatch能得到一个可用的模式匹配,为了简洁这里使用了pmatch,没有pmatch也可以编写同样的宏,但啰嗦一点.没有literal就导致代码里面满是反引号和逗号.完成的代码看起来很啰嗦,但编写时却比较简单,先写一个与使用syntax-case时相同的transformer,然后再重命名. 宏不会对参数求值.

[Scheme入门]1 Edwin的基本使用

Edwin是MIT Scheme系统的一个窗口式的编辑使用前端.启动Edwin实际是先启动Scheme系统,再启动也给Edwin前端.Edwin是一个使用Scheme写的交互式编辑器,其特点是支持Scheme表达式的编辑和求职. Edwin模式: 编辑Scheme文件的模式,如果装入一个.scm文件,相应的Edwin的这个编辑区处于Edwin模式.这种模式下可以编写Scheme程序,也可以对表达式求值.正常求出的值显示在最下面交互行,但不会显示出错信息,也不能进入调试系统. REPL模式: RE

什么是Scheme?原来还可以这样应用!

Scheme定义 Scheme 编程语言是一种Lisp方言,诞生于1975年,由 MIT 的 Gerald J. Sussman 和 Guy L. Steele Jr. 完成.它是现代两大Lisp方言之一:另一个方言是Common Lisp. Scheme遵循极简主义哲学,以一个小型语言核心作为标准,加上各种强力语言工具(语法糖)来扩展语言本身. MIT曾用Scheme作为计算机系入门课程的编程语言.计算机程序语言界著名的魔法书<计算机程序的构造和解释>(又称SICP)正是利用Scheme来解

[SICP Notes] 1.1 The Elements of Programming

About the Book To know more about programming, I have decided to start reading the famous Structure and Interpretation of Computer Programs (SICP, or the Wizard Book), which is first published by MIT in 1985. The Wizard Book used MIT Scheme, which is

ch2

(不太会用mit scheme,在racket下#lang planet neil/sicp也可以搭建相应的开发环境. 2.30-2.31延伸出treemap,WIKI上treemap是一种数据可视化的方式. 而在书中,直接定义: (define (tree-map f tree) (cond ((null? tree) ; 空树 '()) ((not (pair? tree)) ; 叶子节点 (f tree)) (else (cons (tree-map f (car tree)) ; 递归处

你是如何成为 Lisp 程序员的(转)

我成为 Lisp 程序员的道路曲折而漫长.我曾于 2007 年 10 月 3 日在自己的日记中总结了自己的学习经历,现抄录于此. 最早在 2000 年 5 月,斯托曼院士访华时告诉我,Lisp (或者它的现代变种 Scheme)是功能最强大的编程语言,他本人就是一位高级的 Lisp 程序员,他还精通 C,GNU Emacs 就是采用 C 和 Lisp 两者开发的.我当时已经掌握了 C,但不会用 Lisp,但是我完全相信他说的都是真的.于是,一心想成为编程高手的我,决定学习和掌握这门编程语言.我从

SICP1.3 MIT(CLT) Scheme实现(Lisp)

 题目要求给出的函数需要完成以下三件事: 写一个函数,接受三个数作为参数 判断三个数中较大的两个数 计算较大两个数的平方和(两个数的平方之和) 我们从后往前,一步步完成这三个任务. CSDN没有Lisp.用Python的标记了 #lang racket ;;SICP 1.3 ;;try 1 (define (square x)(* x x)) (define (sum x y)(+(square x)(square y))) (define (sum-largest x y z) (cond

Scheme语言--简单介绍

一年前事实上有时间看完SICP这本书,后来由于种种原因,一直没有继续再学.由于SICP中使用Scheme确实应用不多.在Java,C++的语言眼里,Scheme确实非常另类.现在MIT已经放弃了使用Scheme作为SICP的教学语言而转向python之际,我在此開始学习这本书与这门语言的学习.SICP主要使用Scheme语言来解决计算机科学中的一些问题.为了督促自己,每天都能学习.积小流而成江海,把自己的学习过程放在这里,以供自己复习. 本系列主要包含两部分Scheme语言层面的问题及SICP中