On Tue, 2010-12-21 at 17:54 -0500, John Cowan wrote: > Peter Kourzanov scripsit: > > I have no quoting in my example clauses. Read it as follows: > > No, but case implicitly quotes its arguments, which makes it impossible > (or rather useless) for them to be quasiquotations. >
What I am proposing is to generalize quotation in (case) to be quasiquotation (I hope we do agree that quasiquote is more general than quote). Then one can add pattern matching by hooking onto unquote (-splicing) for delineating pattern variables. > > (case 'b > > ((`,a) (list a))) ; explicate quasiquote > > That still won't work. (` ,a) is just (quasiquote (unquote a)), and in > the context of a case key means "either the symbol quasiquote, or the list > (unquote a which is eqv? to the one in the code". I think you missed a level of parentheses;-) `,a is here just 1 alternative... If I read any modern R*RS spec, I see no possibility to use unquote in regular (case) clauses. (eqv? datum ',a) is doomed to be #f for all data, including ',a (because the ',a in the clause is always newly allocated), except, possibly, in the unlikely case that a compiler would stash all occurrences of ',a and the like into one single machine value/location. So there is no use-case for this counter-example. In my interpretation, the clause would match just any datum, with quasiquote elided and unquote being syntax to delineate pattern variables. Please correct me if I'm wrong but I see no problem whatsoever in supporting original (case) semantics alongside pattern-matching semantics. Regards, Pjotr _______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
