-["def", "pair?", ["fn", ["x"],
- ["if", ["sequential?", "x"],
- ["if", [">", ["count", "x"], 0], true, false],
- false]]],
+["def", "starts-with", ["fn", ["ast", "sym"],
+ ["and", ["not", ["empty?", "ast"]],
+ ["let", ["a0", ["first", "ast"]],
+ ["and", ["symbol?", "a0"],
+ ["=", "sym", ["get", "a0", ["`", "val"]]]]]]]],
+
+["def", "quasiquote-loop", ["fn", ["xs"],
+ ["if", ["empty?", "xs"],
+ ["list"],
+ ["let", ["elt", ["first", "xs"],
+ "acc", ["quasiquote-loop", ["rest", "xs"]]],
+ ["if", ["and", ["list?", "elt"],
+ ["starts-with", "elt", ["`", "splice-unquote"]]],
+ ["list", ["symbol", ["`", "concat"]], ["nth", "elt", 1], "acc"],
+ ["list", ["symbol", ["`", "cons"]], ["quasiquote", "elt"], "acc"]]]]]],