diff options
author | bryan newbold <bnewbold@snark.mit.edu> | 2009-01-22 23:04:17 -0500 |
---|---|---|
committer | bryan newbold <bnewbold@snark.mit.edu> | 2009-01-22 23:04:17 -0500 |
commit | 7218768aba3a43f1a62867f35f05cb85a30d7ed2 (patch) | |
tree | acfc09cc29bcb6c543a760ede6a399375a8c92ab /software/scheme | |
parent | 0f238f885ff64a94c2bfb2906b5f1e8edb93dc0c (diff) | |
parent | f18ba63a8b3d39bc9f2ca8dbe6d766d0dd5f77ec (diff) | |
download | knowledge-7218768aba3a43f1a62867f35f05cb85a30d7ed2.tar.gz knowledge-7218768aba3a43f1a62867f35f05cb85a30d7ed2.zip |
Merge branch 'master' of ssh://animus.robocracy.org/srv/git/knowledge
Diffstat (limited to 'software/scheme')
-rw-r--r-- | software/scheme | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/software/scheme b/software/scheme new file mode 100644 index 0000000..258343b --- /dev/null +++ b/software/scheme @@ -0,0 +1,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 + `http://static.bryannewbold.com/mirror/sheets/emacs.pdf`:emacs cheatsheet: + +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? |