blob: 7b7041b34e350a064f2714ac201076a8cced7be4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
==================
Scheme
==================
``mit-scheme`` with the ``scmutils`` package is assumed; the command
``mechanics`` starts in interactive edwin prompt.
See also notes on `The Little Schemer </k/books/littleschemer/>`__.
Scheme Implementations
-----------------------
Very partial list, mostly just the ones which are interesting to me.
MIT/GNU Scheme
The 7.9.0 release (last stable as of 01/01/2009) is not R5RS compatible,
and is generally a pain in the ass to compile on new systems. The 9.0
release should be easier to compile and distribute because it will use
a C compiler to bootstrap (true?).
SCM
SCM is a fairly minimal, very small footprint R5RS-compatible
implementation. Apparently very portable and easy to compile. Includes
the Hobbit compiler. Part of the GNU project, maintained at MIT?
SIOD
SIOD (scheme in one day) is a super small (75k binary?) Scheme
implementation.
Coding in ``edwin``
-----------------------
..note: this section should be spun off as emacs. edwin is essentially a
scheme version of emacs. See this
`emacs cheatsheet <http://static.bnewbold.net/mirror/sheets/emacs.pdf>`__
Common keyboard commands (usually 'M' is alt button, 'C' is ctrl, and 'S' is
meta/super/"windows"):
========= ====================================================================
C-x C-f Open a file, or create a new one
C-x C-s Save the file
C-x k Kill (close) a buffer
C-x C-c Exit the editor
C-g Abort a command
C-x C-e Evaluate the previous expression
M-z Evaluate the surrounding expression
M-o Evaluate the entire buffer (everything)
C-c C-c Kill evaluation after an error
C-y Paste (yank)
C-x 2 Split screen vertically
C-x 5 Split screen horizontally
C-x o Switch to next buffer window
C-x 1 Return to non-split screen
M-x Enter a command by name in minibuffer (use tab to complete)
C-x C-b Show buffer menu
C-x b Select buffer
C-x u Undo
C-y Paste
========= ====================================================================
Scope
--------------
``set!`` looks up a symbol name and permanently changes the first value it comes
across. ``let`` (and ``letrec``) create a new symbol with the given value.
But wait, you need a ``lambda`` block to make everything work?
|