惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy International News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
V2EX - 技术
V2EX - 技术
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
Cloudbric
Cloudbric
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
N
News and Events Feed by Topic
T
Tenable Blog
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
P
Proofpoint News Feed
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
L
LangChain Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东

博客园 - mill2002

当在ECLIPSE中import现存项目时,如遇到版本不符 运行sicp一书5.5.7节“编译代码与求值器的互连”的方法 李先静先生一书第11章jdbshell试用小结 ehua的blog 在microsoft vc++ 2008版中运行李先静先生一书及数据结构高一凡先生一书实例的方法 在android模拟机上安装APK应用程序的方法 treepad compiler design 的资料 学习回调函数的笔记 编译器前端的Windows版命令行测试方法 cloud Try Filecatchered example-rss10.xml (系统找不到指定的文件。) ANT 和 JDK 的设置 - mill2002 书‘Rss & Atom in Action’Ch05 中CSHARP示例 vi简单操作说明 - mill2002 - 博客园 编译器gcc的使用 Javascript中的this - mill2002 - 博客园 fuhao.co.uk网页更新方法之一:
MIT Scheme 的基本使用
mill2002 · 2013-04-11 · via 博客园 - mill2002
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,特此感谢