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

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