3 ms·
The single namespace is quite useful, and if you think the macros are weak then you've only been looking at R5RS and not at real implementations: implicit renam
by qwertyuiop924 10y ago
The single namespace is quite useful, and if you think the macros are weak then you've only been looking at R5RS and not at real implementations: implicit rename, explicit rename, syntactic closures, and syntax-case are all as powerful as CL macros, and a good deal safer (although implicit rename is kind of expensive, and explicit rename requires explicit safety, so syntactic closures or syntax-case are the ways to go)
Call/cc can indeed be useful in real software, although it's uncommon. However, teaching is part of Scheme's domain, so it's still a good thing either way. If you have an especially fast implementation of call/cc (like Chicken), you can use it to implement delimited continuations, which are safer, and can express common uses of call/cc far more elegantly. Racket (it should be noted that Racket isn't a scheme, but it's close enough that it's kind of "in the family" as it were) and Guile (which IS a scheme) have these as part of the core language.