acbd00c3561f5563a20797ae57beb719a2a9d775
scope would get messed up when the macro call appears inside
let/letrec-syntax. Basically, in the following example,
(let-syntax ([id-macro (syntax-rules () [(_ x) x])])
(let ()
(define (foo) (display "not ok\n"))
(let-syntax ([foo (syntax-rules () [(_) (display "ok\n")])])
(id-macro (foo)))))
the call to (id-macro) would make (foo) refer to the foo in the
internal-definition context (the not ok one) instead of the
let-syntax one.
On the plus side, macro expansion is now half a second faster!
Ikarus Scheme is an implementation of the Scheme programming language. The preliminary release of Ikarus implements the majority of the features found in the current standard, the Revised 6 report on the algorithmic language Scheme including full R6RS library and script syntax, syntax-case, unicode strings, bytevectors, user-defined record types, exception handling, conditions, and enumerations. Over 80% of the R6RS procedures and keywords are currently implemented and subsequent releases will proceed towards brining Ikarus to full R6RS conformance. The main purpose behind releasing Ikarus early is to give Scheme programmers the opportunity to experiment with the various new features that were newly introduced in R6RS. The most important of such features is the ability to structure large programs into libraries; where each library extends the language through procedural and syntactic abstractions. Many useful libraries can be written using the currently supported set of R6RS features including text processing tools, symbolic logic systems, interpreters and compilers, and many mathematical and scientific packages. It is my hope that this release will encourage the Scheme community to write and to share their most useful R6RS libraries.
Languages
Scheme
87.1%
C
6.9%
TeX
2%
Makefile
1.3%
Shell
1.2%
Other
1.4%