More error handling on apply_env.
[mes.git] / quasiquote.c
index f724fe2aed0db9ae9556dbf9bcbd6fa7c9492475..f351aaa56c116a3e3548be609588c103647affe0 100644 (file)
@@ -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 *