You are looking at historical revision 33078 of this page. It may differ significantly from its current revision.
Juergen Lorenz
ju (at) jugilo (dot) de
I am a mathematician and a member of the "small is beautiful" crowd. And R5RS-Scheme is the definite example, that a small language is possible which allows one to do almost everything with it. And that in a clear syntax -- or should I better say -- with almost no syntax at all? And it is a programmable programming language! You can always add new syntax to it.
In my mind, Chicken is the best Scheme implementation. Its compiler compiles to C in the most ingenious way, it has the simplest interface to C, and it has a beautiful infrastructure, the eggs system, a helpful community and, and, and ...
Eggs
procedural-macros
Some macros which help to write procedural macros. For example, a hygienic version of define-macro and a procedural variant of syntax-rules, called macro-rules, which is as easy to use as the latter but much more powerfull.
bindings
A light-weight alternative to the matchable egg, with many enhancements.
A number of binding macros is provided, which can destructure arbitrary mixtures of lists, pseudolists, vectors and strings, as well as arbitrary sequence types, the client may add later. The most important one is bind, a variant of Common Lisp's destructuring-bind.
datatypes
An implementation of concrete and abstract types, the former beeing discriminated variant records, as advocated by Friedman, Wand and Haynes in "Essentials of programming languages" and ported to Chicken by Felix Winkelmann. The latter are based on the former, but hide the variant constructors and export constructor and accessor procedures instead. A simple object system is also provided.
locals
Implementation of a local macro inspired by the equally named operation in ML.
multi-methods
Implements a variant of generic functions, where arguments are checked against predicates to choose a matching procedure which is eventually invoked. A destinctive feature of this implementation is, that the client has complete control over the multi-methods state, a search tree, and can decide where to insert a procedure to be eventually invoked, so that more specific procedures are found before less specific ones. Hence, multi-methods can be used to implement OOP. But note, that dispatching is done on all arguments, not only the first one, as in traditional OOP-implementations.
anaphora
Anaphoric macros, which are unhygienic by design. Most of them insert the special identifier "it" behind the scene.
loops
Some simple loop macros.
tuples
Something like immutable random-access vectors, with empty, couples and triples as special cases, and mutable singles as a possible replacement of boxes.
cells
Simple implementation of the cell datatype, a lightweight variant of boxes.
typed-lists
a functor implementation of typed and immutable lists and sets.
arrays
An implementation of functional arrays and - as an application - of sets.
lazy-lists
lazy list implementation based on Moritz Heidkamp's lazy-seq. Contrary to Moritz' implementation, the lazy-list's length is stored in the datastructure, so that a distinction between finite and infinite lazy lists can be made.
treaps
A functional interface to Oleg Kiselyov's and Ivan Raikov's treap egg.
skiplists
An alternative to balanced search-trees.
random-access-lists
combine the advantages of linked lists (fast insert and remove) and vectors (fast access).
simple-tests
Some simple macros and commands which help debugging and testing.
continuations
Syntactic sugar for Marc Feeley's continuation interface providing i.a. catch and throw
simple-exceptions
An easy to use exception wrapper around chicken's condition system.
options
A variant of ML's option datatype, implemented as a functor producing typed modules and an untyped module.
dbc
An implementation of "Design by Contract", coined by Bertrand Meyer for his Eiffel language.
yasos
A Chicken port of Kenneth A. Dickey's "Yet another Scheme Object System".
Obsolete eggs
list-bindings
Restricting some macros of the bindings egg to nested list expressions and supplying define-macro as an application. Obsolete, use bindings instead!
er-macros
Explicit renaming macros made easy. Obsolete, use bindings instead!
ir-macros
Implicit renaming macros made even easier. Obsolete, use bindings instead!
low-level-macros
Low level macros made easy. A merger of the two eggs er-macros and ir-macros. Obsolete, use bindings instead!
contracts
My first implementation of "Design by Contract". Now obsolete, use dbc instead.