source: project/wiki/users/juergen-lorenz @ 37469

Last change on this file since 37469 was 37469, checked in by juergen, 11 months ago
File size: 9.0 KB
Line 
1== Juergen Lorenz
2
3{{ju (at) jugilo (dot) de}}
4
5I 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.
6
7In 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 ...
8
9=== Chicken 5 Eggs
10
11==== [[/eggref/5/biglists|biglists]]
12
13an attempt to unify access to lists and lazy-lists, either finite or
14infinite.
15
16==== [[/eggref/5/bindings|bindings]]
17
18A light-weight alternative to the matchable egg, with many enhancements.
19
20A number of binding macros is provided, which can destructure arbitrary
21mixtures of lists, pseudolists, vectors and strings, as well as
22arbitrary sequence types, the client may add later. The most important
23one is bind, a variant of Common Lisp's destructuring-bind.
24
25==== [[/eggref/5/checks|checks]]
26
27Procedures and macros that help to check pre- and postconditions
28
29==== [[/eggref/5/continuations|continuations]]
30
31some additional interfaces to continuations
32
33==== [[/eggref/5/generics|generics]]
34
35an implementation of generic functions
36
37==== [[/eggref/5/holes|holes]]
38
39Transform expressions with holes into procedures with the holes as
40argument names. Here, a hole is symbol, consisting of zero or more
41digits enclosed in bangs.
42
43==== [[/eggref/5/list-comprehensions|list-comprehensions]]
44
45Some list creating procedures, in particular a variant of
46Clojure's for macro
47
48==== [[/eggref/5/messages|messages]]
49
50An implementation of algebraic-types, abstract-types and object-types,
51based on messages, which are (functional) vectors tagged with a type
52keyword and a variant keyword.
53
54==== [[/eggref/5/procedural-macros|procedural-macros]]
55
56Some macros to facilitate the writing of procedural macros,
57including define-macro and macro-rules, which mimics syntax-rules.
58Port of both basic- and procedural-macros from chicken-4.
59
60==== [[/eggref/5/pseudolists|pseudolists]]
61
62Routines to handle pseudolists as a generalisation of lists.
63
64==== [[/eggref/5/simple-cells|simple-cells]]
65
66Another simple implementation of the cell datatype, a lightweight variant of
67boxes.
68
69==== [[/eggref/5/simple-exceptions|simple-exceptions]]
70
71An easy to use exception wrapper around chicken's condition system.
72
73==== [[/eggref/5/simple-loops|simple-loops]]
74
75some simple loop macros.
76
77==== [[/eggref/5/simple-tests|simple-tests]]
78
79Some simple macros and commands which help debugging and testing.
80
81==== [[/eggref/5/skiplists|skiplists]]
82
83an implementation of skiplists
84
85=== Chicken 4 Eggs
86
87These eggs will no longer be maintained.
88Most of them will be ported to Chicken 5.
89
90==== [[/eggref/4/basic-macros|basic-macros]]
91
92Some macros which help to write procedural macros. For example,
93define-er-macro does the renaming and bind the destructuring
94automatically. bind and bind-case are simplyfied versions of the equally
95named macros in the bindings egg, which are sufficient for
96macro-writing.
97
98==== [[/eggref/4/procedural-macros|procedural-macros]]
99
100Some macros which help to write procedural macros. For example, a
101hygienic version of define-macro and a procedural variant of
102syntax-rules, called macro-rules, which is as easy to use as the latter
103but much more powerfull.
104
105==== [[/eggref/4/bindings|bindings]]
106
107A light-weight alternative to the matchable egg, with many enhancements.
108
109A number of binding macros is provided, which can destructure arbitrary
110mixtures of lists, pseudolists, vectors and strings, as well as
111arbitrary sequence types, the client may add later. The most important
112one is bind, a variant of Common Lisp's destructuring-bind.
113
114==== [[/eggref/4/datatypes|datatypes]]
115
116An implementation of concrete and abstract types, the former beeing
117discriminated variant records, as advocated by Friedman, Wand and Haynes
118in "Essentials of programming languages" and ported to Chicken by Felix
119Winkelmann. The latter are based on the former, but hide the variant
120constructors and export constructor and accessor procedures instead.
121A simple object system is also provided.
122
123==== [[/eggref/4/locals|locals]]
124
125Implementation of a local macro inspired by the equally named operation
126in ML.
127
128==== [[/eggref/4/holes|holes]]
129
130Transform expressions with holes into procedures with the holes as
131argument names. Here, a hole is symbol, consisting of zero or more
132digits enclosed in bangs.
133
134==== [[/eggref/4/list-comprehensions|list-comprehensions]]
135
136Some list creating procedures, in particular for and for*
137
138==== [[/eggref/4/anaphora|anaphora]]
139
140Anaphoric macros, which are unhygienic by design. Most of them insert
141the special identifier "it" behind the scene.
142
143==== [[/eggref/4/loops|loops]]
144
145Some simple loop macros.
146
147==== [[/eggref/4/tuples|tuples]]
148
149Something like immutable random-access vectors, with empty, couples and
150triples as special cases, and mutable singles as a possible replacement
151of boxes.
152
153==== [[/eggref/4/simple-cells|simple-cells]]
154
155Another simple implementation of the cell datatype, a lightweight variant of
156boxes.
157
158==== [[/eggref/4/typed-lists|typed-lists]]
159
160a functor implementation of typed and immutable lists and sets.
161
162==== [[/eggref/4/arrays|arrays]]
163
164An implementation of functional arrays and - as an application - of
165sets.
166
167==== [[/eggref/4/basic-sequences|basic-sequences]]
168
169basic sequence-routines, which are used in bindings and can be used for
170a full-flegded sequence package
171
172==== [[/eggref/4/generics|generics]]
173
174an implementation of generic functions, using selectors for dispatching
175and insertion.
176
177==== [[/eggref/4/messages|messages]]
178
179implements messages as specialized generic functions of arity one,
180possibly parametrized.
181
182==== [[/eggref/4/lazy-lists|lazy-lists]]
183
184lazy list implementation based on Moritz Heidkamp's lazy-seq. Contrary
185to Moritz' implementation, the lazy-list's length is stored in the
186datastructure, so that a distinction between finite and infinite lazy
187lists can be made.
188
189==== [[/eggref/4/treaps|treaps]]
190
191A functional interface to Oleg Kiselyov's and Ivan Raikov's treap egg.
192
193==== [[/eggref/4/skiplists|skiplists]]
194
195An alternative to balanced search-trees.
196
197==== [[/eggref/4/random-access-lists|random-access-lists]]
198
199combine the advantages of linked lists (fast insert and remove) and
200vectors (fast access).
201
202==== [[/eggref/4/simple-tests|simple-tests]]
203
204Some simple macros and commands which help debugging and testing.
205
206==== [[/eggref/4/continuations|continuations]]
207
208Syntactic sugar for Marc Feeley's continuation interface providing i.a.
209catch and throw
210
211==== [[/eggref/4/simple-exceptions|simple-exceptions]]
212
213An easy to use exception wrapper around chicken's condition system.
214
215==== [[/eggref/4/options|options]]
216
217A variant of ML's option datatype, implemented as a functor producing
218typed modules and an untyped module.
219
220==== [[/eggref/4/simple-contracts|simple-contracts]]
221
222Design by contract for procedures
223
224==== [[/eggref/4/yasos|yasos]]
225
226A Chicken port of Kenneth A. Dickey's "Yet another Scheme Object
227System".
228
229=== Obsolete eggs
230
231==== [[/eggref/4/multi-methods|multi-methods]]
232
233Implements a variant of generic functions, where arguments are checked
234against predicates to choose a matching procedure which is eventually
235invoked. A destinctive feature of this implementation is, that the
236client has complete control over the multi-methods state, a search tree,
237and can decide where to insert a procedure to be eventually invoked, so
238that more specific procedures are found before less specific ones.
239Hence, multi-methods can be used to implement OOP. But note, that
240dispatching is done on all arguments, not only the first one, as in
241traditional OOP-implementations.
242Deprecated, use generics instead.
243
244==== [[/eggref/4/cells|cells]]
245
246Simple implementation of the cell datatype, a lightweight variant of
247boxes.
248Deprecated, use simple-cells instead
249
250==== [[/eggref/4/list-bindings|list-bindings]]
251
252Restricting some macros of the bindings egg to nested list expressions
253and supplying define-macro as an application.
254Obsolete, use bindings instead!
255
256==== [[/eggref/4/er-macros|er-macros]]
257
258Explicit renaming macros made easy.
259Obsolete, use bindings instead!
260
261==== [[/eggref/4/ir-macros|ir-macros]]
262
263Implicit renaming macros made even easier.
264Obsolete, use bindings instead!
265
266==== [[/eggref/4/low-level-macros|low-level-macros]]
267
268Low level macros made easy.
269A merger of the two eggs er-macros and ir-macros.
270Obsolete, use bindings instead!
271
272==== [[/eggref/4/dbc|dbc]]
273
274An implementation of "Design by Contract", coined by Bertrand Meyer for his Eiffel language.
275Now obsolete, use simple-contracts instead
276
277==== [[/eggref/4/contracts|contracts]]
278
279My first implementation of "Design by Contract".
280Now obsolete, use dbc instead.
281
282=== Tutorials
283
284==== [[/explicit-renaming-macros|Explicit (and implicit) renaming macros made easy]]
285
286==== [[/iup-tutor|The Iup GUI toolkit]]
287
288==== [[/design-by-contract|Design by Contract]]
289
290==== [[/records-and-oop| Object Orientation and SRFI-99 records]]
Note: See TracBrowser for help on using the repository browser.