diff --git a/s7/LICENSE b/s7/LICENSE new file mode 100644 index 0000000..0d4b05b --- /dev/null +++ b/s7/LICENSE @@ -0,0 +1 @@ +0-clause BSD \ No newline at end of file diff --git a/s7/README.md b/s7/README.md new file mode 100644 index 0000000..27b92ae --- /dev/null +++ b/s7/README.md @@ -0,0 +1,33 @@ +# s7 + +s7 is a Scheme interpreter. + +[documentation](https://ccrma.stanford.edu/software/snd/snd/s7.html) + +[git repository](https://cm-gitlab.stanford.edu/bil/s7.git) + if you get a certificate complaint: git config --global http.sslVerify false + +[daily tarball](https://ccrma.stanford.edu/software/s7/s7.tar.gz) + +[mailing list](http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist) + +[mailing list archive](https://cm-mail.stanford.edu/pipermail/cmdist/) + +[svn site (Snd)](https://sourceforge.net/p/snd/svn1/) + +[scheme-for-max](https://github.com/iainctduncan/scheme-for-max) and [scheme-for-pd](https://github.com/iainctduncan/scheme-for-pd) (Iain Duncan) + +[radium](https://users.notam02.no/~kjetism/radium/) (Kjetil Matheussen) + +[SchemeMosaic](http://xelf.me/scheme-mosaic.html) (David O'Toole) + +[libs7](https://github.com/obazl/libs7/) (Gregg Reynolds) + +[Common Music](http://commonmusic.sourceforge.net/) (Rick Taube) + +docker container: docker run -it schemers/s7:head (Lassi Kortela) + +[web assembly](https://github.com/actonDev/s7-playground/) (Christos Vagias) + also (https://github.com/iainctduncan/s7-wasm) (Iain Duncan) + +[the original](https://en.wikipedia.org/wiki/Sunbeam_S7_and_S8) diff --git a/s7/case.scm b/s7/case.scm new file mode 100644 index 0000000..b715caa --- /dev/null +++ b/s7/case.scm @@ -0,0 +1,661 @@ +;;; case extension including pattern matching +;;; +;;; The nomenclature of r7rs is (case key ((datum...) expression...)), +;;; but I prefer "selector" to "key", "target" to "datum", and "body" to "expression". +;;; +;;; any target not a list, vector, or pattern descriptor (see below) is matched with equivalent? +;;; pattern descriptors are of the form #< whatever > +;;; +;;; #<> any expr matches +;;; # expr matches if (func expr) +;;; # expr matches as above, expr is saved under "label" +;;; # any expr matches, and is saved under "label" +;;; #