+ return numberof(seq) == 2 && structof(*seq(1)) == MalSymbol && seq(1)->val == sym
+}
+
+func quasiquote_loop(seq)
+{
+ acc = MalList(val=&[])
+ for (i=numberof(seq); 0<i; --i) {
+ elt = *seq(i)
+ if (structof(elt) == MalList && starts_with(*elt.val, "splice-unquote")) {
+ acc = MalList(val=&[&MalSymbol(val="concat"), (*elt.val)(2), &acc])
+ } else {
+ acc = MalList(val=&[&MalSymbol(val="cons"), &quasiquote(elt), &acc])
+ }
+ }
+ return acc