mit-scheme user manual note

1 Installation
Goto page http://www.gnu.org/software/mit-scheme/ and find your os's source code and download it to local filesystem, decompress the tarbal. In the source code directory,run
./configure --prefix=/opt/mit-scheme
make compile-microcode
make install

If your config don't specify the prefix ,then the default path of installation will be /usr/local/lib/mit-scheme-$ARCH

2 Running Scheme System
In the shell,run mit-scheme or scheme.

2.1 memory use by scheme system
 stack    for recurse of procedure call
 heap     for dynamic object suche as string and object
 constant space for permanent object,like prodedures in runtime system
 extra    storage for c microcode use

use (print-gc-statistics) to show heap and const storage usage

2.2 command option
microcode options
--heap blocks       specifies the size of the heap in 1024 words which independent used by band
--stack blocks      specifies the size of the heap in 1024 words,this is NOT the unix stack
--constant blocks   
--option-summary    write current cmd option to std-error
--emacs             scheme will run as a subprocess of emacs
--interactive       scheme will run in backgroud detach std-in/out/err

runtime options
--no-init-file      do not load .scheme.init in user's home dir
--suspend-file      write image to user's home dir,load this file will continue compution of file's content

2.3 environment variable
shell environment variable can affect the microcode,at same time in scheme you can use (set-environment-variable! key value) to rewrite it.

MITSCHEME_BAND
MITSCHEME_LIBRARY_PATH
MITSCHEME_CONSTANT
MITSCHEME_HEAP
MITSCHEME_STACK

HOME/HOMEPATH
TMP/TMPDIR

EDWIN_BINARY_DIRECTORY
PATH

2.4 leaving scheme
(exit)  to exit scheme,  equals c-x c-c
(quit)  to suspend scheme, equls c-x c-z

3 Using scheme system

3.1 REPL mode
c-g to return top level,equals (restart 1)
C-c C-x to return current level
C-c C-u to return up level
C-c C-b to break
(continue) to go on break
C-c to interrupt and wait for char for next step,atfer that
q to exit
z to suspend
i to ignore
? for help

3.2 load files
(load path)  path can be bin or scm source code ,scheme will find it and run it

3.3 gc
(gc-flip)    to for gc start
(purify obj) to move obj form heap into constant space
(print-gc-statistics)     show gc info
(toggle-gc-notification!) switch gc notify

4 compile program
4.1 compile procedures
(cf file dst)  compile file to native code,it would generate .bin .com .bci files
.bci contains debug info,and stored in compressed format
(sf file dst)  compile file to scode

4.2 declarations
Some declaration in code can help cf and sf to gen code more efficient.

(declare (usual-integrations ))  

(declare (replace-operator <body>))
body: (operator-name (nargs1 value1)  (nargs2 value2) ...)
this is used to inform compiler select different value accoding to number of argment.

(declare (recucte-operator (cons* cons)))
this is used to inform a name is a n-array version of a operator.


5 debug
5.1
here we discuss thd debuger in scheme ,not in edwin.
when a error occur ,in error mode,we can evaluate (debug) to get into debug mode. enter ? can get cmd in debug mode.

g  go into specified subproblems
b  go into specified reductions

5.4 advising procedure
advising will output specified info when proc are runing.
(trace-entry proc) ->(untrace-entry proc)
(trace-exit proc)  ->(untrace-exit proc)
(trace-both proc)  ->(untrace proc)

6 profile


8 Edwin
8.1 Enter edwin
mit-scheme --edit
or in scheme,evaluate (edit)

8.2 leaving edwin

c-x z   stop edwin and back to scheme
c-x c   offer to save buffer,then kill edwin back to scheme
c-x c-c save and exit both sheme and edwin
c-x c-z to stop edwin and suspend scheme ,back to shell

8.3 scheme mode
Edwin has special support for edit and evaluating scheme code.
scheme mode will entered when .scm file opened. file not with .scm extention can place -*-Scheme-*- in the first line. Third execut command alt-x scheme-mode can put any buffer in scheme mode.

C-i    indent current line
C-M-q  indent the expression
C-M-i  auto complete global name
M-/    auto complete
M-A    tip for function's args

8.4 Evaluation
C-x C-e  evaluate the expression to the left of point
M-z      evaluate the definition of that point is in
C-M-z    evaluate all the expr in the region
M-o      evaluate entire buffer

when you evaluate some code ,it will send to repl buffer and run in separate thread. If you want to terminate the evaluation,just use C-c C-c.

If you don't want to use repl for evaluation, set Edwin variable evaluate-in-inferior-repl to #f. Then you can use C-g to stop evaluation.

8.5 repl mode
when edwin start,it open a buffer named *scheme*,which is used as repl.
In the repl line,you can interact with scheme.
C-c C-x abort the evaluation return to current repl level
C-c C-u return to pre repl level
C-c C-b enter to a breakpoint

M-p/n   to up/down the history cmd in repl buffer line

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值