[plt-scheme] Swindle
Swindle is finally ready for PLT 202.
http://www.barzilay.org/Swindle/
From the readme:
Swindle is a collection of modules that extend PLT Scheme
(www.plt-scheme.org) with many additional features. The main feature
which started this project is a CLOS-like object system based on
Tiny-CLOS from Xerox, but there is a lot more -- a generalized
Lisp-like `set!' and related functionality, lambda argument
&-keywords, a lot of convenient syntaxes etc. The latest version of
Swindle is available at http://www.barzilay.org/Swindle/. There is
also a low volume mailing list, mail me to register. Comments, bugs,
or whatever are welcome.
The following is a high-level description of major features provided
by Swindle. For every feature, the file that provides it is
specified, if only a subset of the system is needed.
* Some basic syntax extensions, including lambda &-keywords, and
improved `define' and `let' forms. (Available separately using
"base.ss".)
* Generic setters with `set!', more useful side effect forms: `pset!',
`shift!', `rotate!', and some simple ones like `inc!', and `push!'.
(Available separately using "setf.ss", where the names `setf!' and
`psetf!' are used to avoid changing the Scheme form.)
* Convenient syntax for `provide' forms. ("misc.ss")
* Easy macro-defining macros -- simple syntax-rules macros, and a
generic `defmacro' utility, all with a local `let...' form, and
extended to easily create symbol macros. ("misc.ss")
* An `echo' mechanism which is an alternative to using format strings,
and contains many useful features including a list iteration
construct, and easy to extend. ("misc.ss")
* A `regexper' syntax which is similar to a `case' on strings with
easy access to submatches. ("misc.ss")
* A hash table that is suitable for memoization (works on identities
of elements of a list). ("misc.ss")
* A CLOS-like object system -- based on Tiny CLOS, but with many
extensions that bring it much closer to CLOS, and heavily optimized.
Some added features include singleton and struct classes, applicable
stand-alone methods, method-combination, and some MOP extensions.
(Available without syntax bindings in "tiny-clos.ss")
* Good integration with the Scheme implementation: primitive values
have corresponding Swindle classes, and struct types can also be
used as type specializers. A Swindle class will be made when
needed, and it will reflect the struct hierarchy. ("tiny-clos.ss")
* Many hairy macros that make the object system much more convenient
(CLOS has also a lot of macro code). Some of the macros (especially
`defclass') can be customized. ("clos.ss")
* Useful generic functions, including `print-object' which is used to
display all objects. ("extra.ss")
* A matcher mechanism with a generic-like interface. ("extra.ss")
* The fun `amb' toy. ("extra.ss")
* A language that can easily create HTML, where the result is
human-editable. ("html.ss")
* Plays well with DrScheme. ("tool.ss")
* Some customizable syntax features. ("custom.ss")
* Easy to add customized languages to DrScheme. ("custom.ss")
* A bonus graphic demonstration of lambda calculus principles.
("gcalc/gcalc.ss")
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://www.barzilay.org/ Maze is Life!