X-Git-Url: https://jxself.org/git/?p=mes.git;a=blobdiff_plain;f=quasiquote.c;h=f351aaa56c116a3e3548be609588c103647affe0;hp=f724fe2aed0db9ae9556dbf9bcbd6fa7c9492475;hb=ad717d4bba7b76cb5de8617d951277a9ebfed184;hpb=bd7beddcdafb63967e208fd9e868b6f92a9b6990 diff --git a/quasiquote.c b/quasiquote.c index f724fe2a..f351aaa5 100644 --- a/quasiquote.c +++ b/quasiquote.c @@ -77,12 +77,17 @@ eval_quasisyntax (scm *e, scm *a) scm *add_environment (scm *a, char const *name, scm *x); +scm * +the_unquoters = &scm_nil; + scm * add_unquoters (scm *a) { - a = cons (cons (&symbol_unquote, &scm_unquote), a); - a = cons (cons (&symbol_unquote_splicing, &scm_unquote_splicing), a); - return a; + if (the_unquoters == &scm_nil) + the_unquoters = cons (cons (&symbol_unquote, &scm_unquote), + cons (cons (&symbol_unquote_splicing, &scm_unquote_splicing), + &scm_nil)); + return append2 (the_unquoters, a); } scm *