> It is trivial to redefine `if` to work this way. I hope so. All Common Lisp implementations I've tested flat-out disallow "redefinition of the special form "if"". While all Schemes I've tested that support define-syntax do allow redefinition of "if"... on Racket, it does not play well with low-level macros (using datum->syntax, or the "mzlib/defmacro" library) due to their phase-separation. Ikarus does do exactly what I want (I can redefine "if" and define low-level macros with it); Chicken... does provide defmacro, in a separately downloadable library I found just now, which does work the way I want; Chibi and scsh/scheme48 don't seem to have low-level macros, while Gambit doesn't even have define-syntax.
I suppose this committee qua Scheme committee isn't responsible for Common Lisps, or technically even Racket. Restricting my view to the other Schemes, they do seem to universally allow redefinition of built-in operators without breaking everything, unlike the Common Lisps (and emacs lisp). Clearly this is a good feature in this case, though I don't believe the standard guarantees it, and I wonder whether it'll be different for new Schemes or whether existing Schemes will change. Meanwhile, I'll continue using Racket as a compilation target and runtime. > too late and unlikely to survive a ballot Sure, yeah. I didn't really expect it to pass; I merely believe it's the right choice and felt obligated to put the proposal on record. (As a user of the Dvorak keyboard layout, I am no stranger to being opposed by an overwhelming weight of tradition.) Perhaps it will eventually become widely used and find its way into a future standard. --John Boyle *Science is what we understand well enough to explain to a computer. Art is everything else we do.* --Knuth On Thu, Oct 11, 2012 at 1:06 PM, John Cowan <[email protected]> wrote: > This is a Formal Response to Formal Comment #382: > > Allow "if" to accept arbitrarily many if-then pairs > > The editors rejected this request as too late and unlikely to survive > a ballot. It is trivial to redefine `if` to work this way. > > If you are dissatisfied with this Formal Response, please let us know. > Thank you for participating in the R7RS process. > > -- > John Cowan [email protected] http://ccil.org/~cowan > It's the old, old story. Droid meets droid. Droid becomes chameleon. > Droid loses chameleon, chameleon becomes blob, droid gets blob back > again. It's a classic tale. --Kryten, Red Dwarf >
_______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
