Problem of implicit quasiquote
Shiro Kawai
(27 Jun 2020 18:08 UTC)
|
Re: Problem of implicit quasiquote
Marc Nieper-Wißkirchen
(27 Jun 2020 20:54 UTC)
|
Re: Problem of implicit quasiquote
Shiro Kawai
(28 Jun 2020 02:09 UTC)
|
Re: Problem of implicit quasiquote
Shiro Kawai
(28 Jun 2020 02:10 UTC)
|
Re: Problem of implicit quasiquote
Marc Nieper-Wißkirchen
(28 Jun 2020 08:14 UTC)
|
Re: Problem of implicit quasiquote
Shiro Kawai
(28 Jun 2020 09:34 UTC)
|
Re: Problem of implicit quasiquote Marc Nieper-Wißkirchen (28 Jun 2020 10:34 UTC)
|
Re: Problem of implicit quasiquote
Shiro Kawai
(28 Jun 2020 11:00 UTC)
|
Re: Problem of implicit quasiquote
Shiro Kawai
(28 Jun 2020 11:16 UTC)
|
Re: Problem of implicit quasiquote
Marc Nieper-Wißkirchen
(28 Jun 2020 12:50 UTC)
|
Re: Problem of implicit quasiquote
Shiro Kawai
(28 Jun 2020 20:45 UTC)
|
Re: Problem of implicit quasiquote
Marc Nieper-Wißkirchen
(28 Jun 2020 21:01 UTC)
|
Re: Problem of implicit quasiquote
Shiro Kawai
(28 Jun 2020 21:08 UTC)
|
Re: Problem of implicit quasiquote
Marc Nieper-Wißkirchen
(28 Jun 2020 21:14 UTC)
|
Re: Problem of implicit quasiquote
Shiro Kawai
(28 Jun 2020 21:42 UTC)
|
Re: Problem of implicit quasiquote
Shiro Kawai
(28 Jun 2020 21:52 UTC)
|
Re: Problem of implicit quasiquote
Marc Nieper-Wißkirchen
(29 Jun 2020 06:31 UTC)
|
Re: Problem of implicit quasiquote
Shiro Kawai
(29 Jun 2020 20:27 UTC)
|
Re: Problem of implicit quasiquote
Marc Nieper-Wißkirchen
(30 Jun 2020 13:11 UTC)
|
Re: Problem of implicit quasiquote
Marc Nieper-Wißkirchen
(04 Jul 2020 09:09 UTC)
|
Am So., 28. Juni 2020 um 11:34 Uhr schrieb Shiro Kawai <xxxxxx@gmail.com>: > Ah right! It was too easy. I remember the real issue I had when I was dealing with nested unquotes with implicit quasiquote. I think everything boils down how to insert literal unquotes into the output of a quasiquotation. Given an expression X, what is the quasiquote template that evaluates to the evaluation of (list 'unquote X). The canonical template for this seems to be: (,'unquote ,x) Again, we don't need any explicit list constructors. > If quasiquotes and quotes are always paired up, you have a canonical rule to deal with nested quasiquote, even the meaning of quasiquote may change by surrounding macros, as long as other macros follow the same rule---the outermost quasiquote corresponds to the innermost unquote. Implicit quasiquote breaks the canonicality, and it seems to me a too high price to pay to save just one character. We can extend the canonical rule. Whenever you want to insert an unquote or unquote splicing without a matching quasiquote in the output, just use ,'unquote. This may not be as pretty as ,,x, but this is due to the choice of the qq template engine. It shouldn't dictate the form of macros. There are a lot of meaningful syntaxes where "raw" commas appear. A qq template (at some depth) is actually one. :) That said, for the generation of Scheme syntax one shouldn't use qq anyway if one is not forced to do because maintaining source location information will be hard or impossible. The syntax form is made especially for this and is much clearer anyway: (define-syntax gen-match (lambda (stx) (syntax-case stx () ((_ name x input) #'(match input ((name ,x ,y) `(,x ,y)) (_ #f)))))) (Of course, this is essentially a syntax-rules macro.)