corascript
Version:
cora is a lisp dialect compile to javascript
98 lines (50 loc) • 432 kB
JavaScript
var kl = require('./kl'); let defun = kl.defun; let klTailApply = kl.klTailApply; let Symbol = kl.Symbol; let err = kl.err; let primitive = kl.primitive; let mustBoolean = kl.mustBoolean; let Trampoline = kl.Trampoline; let klFun = kl.klFun;
defun("shen.shen", function() { return (function(){klTailApply(primitive["shen.credits"]); return new Trampoline(primitive["shen.loop"]);})() ;}, 0);
defun("exit", function(V305) { return new Trampoline(primitive["set"], new Symbol("shen.*continue-repl-loop*"), false) ;}, 1);
defun("shen.loop", function() { return (function(){klTailApply(primitive["shen.initialise_environment"]); return (function(){klTailApply(primitive["shen.prompt"]); return (function(){(function(){ try { return klTailApply(primitive["shen.read-evaluate-print"]);} catch (err) { return klTailApply(klFun(function(E) { return new Trampoline(primitive["pr"], klTailApply(primitive["error-to-string"], E), klTailApply(primitive["stoutput"]));}, 1), err);} })(); return (mustBoolean(klTailApply(primitive["value"], new Symbol("shen.*continue-repl-loop*"))) === true) ? (new Trampoline(primitive["shen.loop"])) : (new Symbol("exit"));})();})();})() ;}, 0);
defun("shen.credits", function() { return (function(){klTailApply(primitive["shen.prhush"], "Cora, my own lisp!\n", klTailApply(primitive["stoutput"])); return (function(){klTailApply(primitive["shen.prhush"], "Inspired by the awesome Shen language.\n", klTailApply(primitive["stoutput"])); return new Trampoline(primitive["shen.prhush"], "Copyright (C) 2018 Arthur Mao <tiancaiamao@gmail.com>\n", klTailApply(primitive["stoutput"]));})();})() ;}, 0);
defun("shen.initialise_environment", function() { return new Trampoline(primitive["shen.multiple-set"], klTailApply(primitive["cons"], new Symbol("shen.*call*"), klTailApply(primitive["cons"], 0, klTailApply(primitive["cons"], new Symbol("shen.*infs*"), klTailApply(primitive["cons"], 0, klTailApply(primitive["cons"], new Symbol("shen.*process-counter*"), klTailApply(primitive["cons"], 0, klTailApply(primitive["cons"], new Symbol("shen.*catch*"), klTailApply(primitive["cons"], 0, null))))))))) ;}, 0);
defun("shen.multiple-set", function(V307) { return (mustBoolean(klTailApply(primitive["="], null, V307)) === true) ? (null) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V307)) && mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], V307))))) === true) ? ((function(){klTailApply(primitive["set"], klTailApply(primitive["hd"], V307), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V307))); return new Trampoline(primitive["shen.multiple-set"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V307)));})()) : ((mustBoolean(true) === true) ? (new Trampoline(primitive["shen.f_error"], new Symbol("shen.multiple-set"))) : (err("no cond match")))) ;}, 1);
defun("destroy", function(V309) { return new Trampoline(primitive["declare"], V309, new Symbol("symbol")) ;}, 1);
defun("shen.read-evaluate-print", function() { return (function(){var Lineread = klTailApply(primitive["shen.toplineread"]); return (function(){var History = klTailApply(primitive["value"], new Symbol("shen.*history*")); return (function(){var NewLineread = klTailApply(primitive["shen.retrieve-from-history-if-needed"], Lineread, History); return (function(){var NewHistory = klTailApply(primitive["shen.update_history"], NewLineread, History); return (function(){var Parsed = klTailApply(primitive["fst"], NewLineread); return new Trampoline(primitive["shen.toplevel"], Parsed);})();})();})();})();})() ;}, 0);
defun("shen.retrieve-from-history-if-needed", function(V321, V322) { return (mustBoolean((mustBoolean(klTailApply(primitive["tuple?"], V321)) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["snd"], V321))) && mustBoolean(klTailApply(primitive["element?"], klTailApply(primitive["hd"], klTailApply(primitive["snd"], V321)), klTailApply(primitive["cons"], klTailApply(primitive["shen.space"]), klTailApply(primitive["cons"], klTailApply(primitive["shen.newline"]), null)))))))) === true) ? (new Trampoline(primitive["shen.retrieve-from-history-if-needed"], klTailApply(primitive["@p"], klTailApply(primitive["fst"], V321), klTailApply(primitive["tl"], klTailApply(primitive["snd"], V321))), V322)) : ((mustBoolean((mustBoolean(klTailApply(primitive["tuple?"], V321)) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["snd"], V321))) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], klTailApply(primitive["snd"], V321)))) && mustBoolean((mustBoolean(klTailApply(primitive["="], null, klTailApply(primitive["tl"], klTailApply(primitive["tl"], klTailApply(primitive["snd"], V321))))) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V322)) && mustBoolean((mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], klTailApply(primitive["snd"], V321)), klTailApply(primitive["shen.exclamation"]))) && mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], klTailApply(primitive["tl"], klTailApply(primitive["snd"], V321))), klTailApply(primitive["shen.exclamation"]))))))))))))))) === true) ? ((function(){var PastPrint = klTailApply(primitive["shen.prbytes"], klTailApply(primitive["snd"], klTailApply(primitive["hd"], V322))); return new Trampoline(primitive["hd"], V322);})()) : ((mustBoolean((mustBoolean(klTailApply(primitive["tuple?"], V321)) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["snd"], V321))) && mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], klTailApply(primitive["snd"], V321)), klTailApply(primitive["shen.exclamation"]))))))) === true) ? ((function(){var Key$qu = klTailApply(primitive["shen.make-key"], klTailApply(primitive["tl"], klTailApply(primitive["snd"], V321)), V322); return (function(){var Find = klTailApply(primitive["head"], klTailApply(primitive["shen.find-past-inputs"], Key$qu, V322)); return (function(){var PastPrint = klTailApply(primitive["shen.prbytes"], klTailApply(primitive["snd"], Find)); return Find;})();})();})()) : ((mustBoolean((mustBoolean(klTailApply(primitive["tuple?"], V321)) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["snd"], V321))) && mustBoolean((mustBoolean(klTailApply(primitive["="], null, klTailApply(primitive["tl"], klTailApply(primitive["snd"], V321)))) && mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], klTailApply(primitive["snd"], V321)), klTailApply(primitive["shen.percent"]))))))))) === true) ? ((function(){klTailApply(primitive["shen.print-past-inputs"], klFun(function(X) { return true;}, 1), klTailApply(primitive["reverse"], V322), 0); return new Trampoline(primitive["abort"]);})()) : ((mustBoolean((mustBoolean(klTailApply(primitive["tuple?"], V321)) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["snd"], V321))) && mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], klTailApply(primitive["snd"], V321)), klTailApply(primitive["shen.percent"]))))))) === true) ? ((function(){var Key$qu = klTailApply(primitive["shen.make-key"], klTailApply(primitive["tl"], klTailApply(primitive["snd"], V321)), V322); return (function(){var Pastprint = klTailApply(primitive["shen.print-past-inputs"], Key$qu, klTailApply(primitive["reverse"], V322), 0); return new Trampoline(primitive["abort"]);})();})()) : ((mustBoolean(true) === true) ? (V321) : (err("no cond match"))))))) ;}, 2);
defun("shen.percent", function() { return 37 ;}, 0);
defun("shen.exclamation", function() { return 33 ;}, 0);
defun("shen.prbytes", function(V324) { return (function(){klTailApply(primitive["for-each"], klFun(function(Byte) { return new Trampoline(primitive["pr"], klTailApply(primitive["n->string"], Byte), klTailApply(primitive["stoutput"]));}, 1), V324); return new Trampoline(primitive["nl"], 1);})() ;}, 1);
defun("shen.update_history", function(V327, V328) { return new Trampoline(primitive["set"], new Symbol("shen.*history*"), klTailApply(primitive["cons"], V327, V328)) ;}, 2);
defun("shen.toplineread", function() { return new Trampoline(primitive["shen.toplineread_loop"], klTailApply(primitive["read-char-code"], klTailApply(primitive["stinput"])), null) ;}, 0);
defun("shen.toplineread_loop", function(V332, V333) { return (mustBoolean((mustBoolean(klTailApply(primitive["="], -1, V332)) && mustBoolean(klTailApply(primitive["="], null, V333)))) === true) ? (new Trampoline(primitive["exit"], 0)) : ((mustBoolean(klTailApply(primitive["="], V332, klTailApply(primitive["shen.hat"]))) === true) ? (new Trampoline(primitive["simple-error"], "line read aborted")) : ((mustBoolean(klTailApply(primitive["element?"], V332, klTailApply(primitive["cons"], klTailApply(primitive["shen.newline"]), klTailApply(primitive["cons"], klTailApply(primitive["shen.carriage-return"]), null)))) === true) ? ((function(){var Line = klTailApply(primitive["compile"], klFun(function(X) { return new Trampoline(primitive["shen.<st_input>"], X);}, 1), V333, klFun(function(E) { return new Symbol("shen.nextline");}, 1)); return (function(){var It = klTailApply(primitive["shen.record-it"], V333); return (mustBoolean((mustBoolean(klTailApply(primitive["="], Line, new Symbol("shen.nextline"))) || mustBoolean(klTailApply(primitive["empty?"], Line)))) === true) ? (new Trampoline(primitive["shen.toplineread_loop"], klTailApply(primitive["read-char-code"], klTailApply(primitive["stinput"])), klTailApply(primitive["append"], V333, klTailApply(primitive["cons"], V332, null)))) : (new Trampoline(primitive["@p"], Line, V333));})();})()) : ((mustBoolean(true) === true) ? (new Trampoline(primitive["shen.toplineread_loop"], klTailApply(primitive["read-char-code"], klTailApply(primitive["stinput"])), (mustBoolean(klTailApply(primitive["="], V332, -1)) === true) ? (V333) : (klTailApply(primitive["append"], V333, klTailApply(primitive["cons"], V332, null))))) : (err("no cond match"))))) ;}, 2);
defun("shen.hat", function() { return 94 ;}, 0);
defun("shen.newline", function() { return 10 ;}, 0);
defun("shen.carriage-return", function() { return 13 ;}, 0);
defun("tc", function(V339) { return (mustBoolean(klTailApply(primitive["="], new Symbol("+"), V339)) === true) ? (new Trampoline(primitive["set"], new Symbol("shen.*tc*"), true)) : ((mustBoolean(klTailApply(primitive["="], new Symbol("-"), V339)) === true) ? (new Trampoline(primitive["set"], new Symbol("shen.*tc*"), false)) : ((mustBoolean(true) === true) ? (new Trampoline(primitive["simple-error"], "tc expects a + or -")) : (err("no cond match")))) ;}, 1);
defun("shen.prompt", function() { return (mustBoolean(klTailApply(primitive["value"], new Symbol("shen.*tc*"))) === true) ? (new Trampoline(primitive["shen.prhush"], klTailApply(primitive["cn"], "\n\n(", klTailApply(primitive["shen.app"], klTailApply(primitive["length"], klTailApply(primitive["value"], new Symbol("shen.*history*"))), "+) ", new Symbol("shen.a"))), klTailApply(primitive["stoutput"]))) : (new Trampoline(primitive["shen.prhush"], klTailApply(primitive["cn"], "\n\n(", klTailApply(primitive["shen.app"], klTailApply(primitive["length"], klTailApply(primitive["value"], new Symbol("shen.*history*"))), "-) ", new Symbol("shen.a"))), klTailApply(primitive["stoutput"]))) ;}, 0);
defun("shen.toplevel", function(V341) { return new Trampoline(primitive["shen.toplevel_evaluate"], V341, klTailApply(primitive["value"], new Symbol("shen.*tc*"))) ;}, 1);
defun("shen.find-past-inputs", function(V344, V345) { return (function(){var F = klTailApply(primitive["shen.find"], V344, V345); return (mustBoolean(klTailApply(primitive["empty?"], F)) === true) ? (new Trampoline(primitive["simple-error"], "input not found\n")) : (F);})() ;}, 2);
defun("shen.make-key", function(V348, V349) { return (function(){var Atom = klTailApply(primitive["hd"], klTailApply(primitive["compile"], klFun(function(X) { return new Trampoline(primitive["shen.<st_input>"], X);}, 1), V348, klFun(function(E) { return (mustBoolean(klTailApply(primitive["cons?"], E)) === true) ? (new Trampoline(primitive["simple-error"], klTailApply(primitive["cn"], "parse error here: ", klTailApply(primitive["shen.app"], E, "\n", new Symbol("shen.s"))))) : (new Trampoline(primitive["simple-error"], "parse error\n"));}, 1))); return (mustBoolean(klTailApply(primitive["integer?"], Atom)) === true) ? (klFun(function(X) { return new Trampoline(primitive["="], X, klTailApply(primitive["nth"], klTailApply(primitive["+"], Atom, 1), klTailApply(primitive["reverse"], V349)));}, 1)) : (klFun(function(X) { return new Trampoline(primitive["shen.prefix?"], V348, klTailApply(primitive["shen.trim-gubbins"], klTailApply(primitive["snd"], X)));}, 1));})() ;}, 2);
defun("shen.trim-gubbins", function(V351) { return (mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V351)) && mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], V351), klTailApply(primitive["shen.space"]))))) === true) ? (new Trampoline(primitive["shen.trim-gubbins"], klTailApply(primitive["tl"], V351))) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V351)) && mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], V351), klTailApply(primitive["shen.newline"]))))) === true) ? (new Trampoline(primitive["shen.trim-gubbins"], klTailApply(primitive["tl"], V351))) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V351)) && mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], V351), klTailApply(primitive["shen.carriage-return"]))))) === true) ? (new Trampoline(primitive["shen.trim-gubbins"], klTailApply(primitive["tl"], V351))) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V351)) && mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], V351), klTailApply(primitive["shen.tab"]))))) === true) ? (new Trampoline(primitive["shen.trim-gubbins"], klTailApply(primitive["tl"], V351))) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V351)) && mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], V351), klTailApply(primitive["shen.left-round"]))))) === true) ? (new Trampoline(primitive["shen.trim-gubbins"], klTailApply(primitive["tl"], V351))) : ((mustBoolean(true) === true) ? (V351) : (err("no cond match"))))))) ;}, 1);
defun("shen.space", function() { return 32 ;}, 0);
defun("shen.tab", function() { return 9 ;}, 0);
defun("shen.left-round", function() { return 40 ;}, 0);
defun("shen.find", function(V360, V361) { return (mustBoolean(klTailApply(primitive["="], null, V361)) === true) ? (null) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V361)) && mustBoolean(klTailApply(V360, klTailApply(primitive["hd"], V361))))) === true) ? (new Trampoline(primitive["cons"], klTailApply(primitive["hd"], V361), klTailApply(primitive["shen.find"], V360, klTailApply(primitive["tl"], V361)))) : ((mustBoolean(klTailApply(primitive["cons?"], V361)) === true) ? (new Trampoline(primitive["shen.find"], V360, klTailApply(primitive["tl"], V361))) : ((mustBoolean(true) === true) ? (new Trampoline(primitive["shen.f_error"], new Symbol("shen.find"))) : (err("no cond match"))))) ;}, 2);
defun("shen.prefix?", function(V375, V376) { return (mustBoolean(klTailApply(primitive["="], null, V375)) === true) ? (true) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V375)) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V376)) && mustBoolean(klTailApply(primitive["="], klTailApply(primitive["hd"], V376), klTailApply(primitive["hd"], V375))))))) === true) ? (new Trampoline(primitive["shen.prefix?"], klTailApply(primitive["tl"], V375), klTailApply(primitive["tl"], V376))) : ((mustBoolean(true) === true) ? (false) : (err("no cond match")))) ;}, 2);
defun("shen.print-past-inputs", function(V388, V389, V390) { return (mustBoolean(klTailApply(primitive["="], null, V389)) === true) ? (new Symbol("_")) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V389)) && mustBoolean(klTailApply(primitive["not"], klTailApply(V388, klTailApply(primitive["hd"], V389)))))) === true) ? (new Trampoline(primitive["shen.print-past-inputs"], V388, klTailApply(primitive["tl"], V389), klTailApply(primitive["+"], V390, 1))) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V389)) && mustBoolean(klTailApply(primitive["tuple?"], klTailApply(primitive["hd"], V389))))) === true) ? ((function(){klTailApply(primitive["shen.prhush"], klTailApply(primitive["shen.app"], V390, ". ", new Symbol("shen.a")), klTailApply(primitive["stoutput"])); return (function(){klTailApply(primitive["shen.prbytes"], klTailApply(primitive["snd"], klTailApply(primitive["hd"], V389))); return new Trampoline(primitive["shen.print-past-inputs"], V388, klTailApply(primitive["tl"], V389), klTailApply(primitive["+"], V390, 1));})();})()) : ((mustBoolean(true) === true) ? (new Trampoline(primitive["shen.f_error"], new Symbol("shen.print-past-inputs"))) : (err("no cond match"))))) ;}, 3);
defun("shen.toplevel_evaluate", function(V393, V394) { return (mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V393)) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], V393))) && mustBoolean((mustBoolean(klTailApply(primitive["="], new Symbol(":"), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V393)))) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V393)))) && mustBoolean((mustBoolean(klTailApply(primitive["="], null, klTailApply(primitive["tl"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V393))))) && mustBoolean(klTailApply(primitive["="], true, V394)))))))))))) === true) ? (new Trampoline(primitive["shen.typecheck-and-evaluate"], klTailApply(primitive["hd"], V393), klTailApply(primitive["hd"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V393))))) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V393)) && mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], V393))))) === true) ? ((function(){klTailApply(primitive["shen.toplevel_evaluate"], klTailApply(primitive["cons"], klTailApply(primitive["hd"], V393), null), V394); return (function(){klTailApply(primitive["nl"], 1); return new Trampoline(primitive["shen.toplevel_evaluate"], klTailApply(primitive["tl"], V393), V394);})();})()) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V393)) && mustBoolean((mustBoolean(klTailApply(primitive["="], null, klTailApply(primitive["tl"], V393))) && mustBoolean(klTailApply(primitive["="], true, V394)))))) === true) ? (new Trampoline(primitive["shen.typecheck-and-evaluate"], klTailApply(primitive["hd"], V393), klTailApply(primitive["gensym"], new Symbol("A")))) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V393)) && mustBoolean((mustBoolean(klTailApply(primitive["="], null, klTailApply(primitive["tl"], V393))) && mustBoolean(klTailApply(primitive["="], false, V394)))))) === true) ? ((function(){var Eval = klTailApply(primitive["shen.eval-without-macros"], klTailApply(primitive["hd"], V393)); return new Trampoline(primitive["print"], Eval);})()) : ((mustBoolean(true) === true) ? (new Trampoline(primitive["shen.f_error"], new Symbol("shen.toplevel_evaluate"))) : (err("no cond match")))))) ;}, 2);
defun("shen.typecheck-and-evaluate", function(V397, V398) { return (function(){var Typecheck = klTailApply(primitive["shen.typecheck"], V397, V398); return (mustBoolean(klTailApply(primitive["="], Typecheck, false)) === true) ? (new Trampoline(primitive["simple-error"], "type error\n")) : ((function(){var Eval = klTailApply(primitive["shen.eval-without-macros"], V397); return (function(){var Type = klTailApply(primitive["shen.pretty-type"], Typecheck); return new Trampoline(primitive["shen.prhush"], klTailApply(primitive["shen.app"], Eval, klTailApply(primitive["cn"], " : ", klTailApply(primitive["shen.app"], Type, "", new Symbol("shen.r"))), new Symbol("shen.s")), klTailApply(primitive["stoutput"]));})();})());})() ;}, 2);
defun("shen.pretty-type", function(V400) { return new Trampoline(primitive["shen.mult_subst"], klTailApply(primitive["value"], new Symbol("shen.*alphabet*")), klTailApply(primitive["shen.extract-pvars"], V400), V400) ;}, 1);
defun("shen.extract-pvars", function(V406) { return (mustBoolean(klTailApply(primitive["shen.pvar?"], V406)) === true) ? (new Trampoline(primitive["cons"], V406, null)) : ((mustBoolean(klTailApply(primitive["cons?"], V406)) === true) ? (new Trampoline(primitive["union"], klTailApply(primitive["shen.extract-pvars"], klTailApply(primitive["hd"], V406)), klTailApply(primitive["shen.extract-pvars"], klTailApply(primitive["tl"], V406)))) : ((mustBoolean(true) === true) ? (null) : (err("no cond match")))) ;}, 1);
defun("shen.mult_subst", function(V414, V415, V416) { return (mustBoolean(klTailApply(primitive["="], null, V414)) === true) ? (V416) : ((mustBoolean(klTailApply(primitive["="], null, V415)) === true) ? (V416) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V414)) && mustBoolean(klTailApply(primitive["cons?"], V415)))) === true) ? (new Trampoline(primitive["shen.mult_subst"], klTailApply(primitive["tl"], V414), klTailApply(primitive["tl"], V415), klTailApply(primitive["subst"], klTailApply(primitive["hd"], V414), klTailApply(primitive["hd"], V415), V416))) : ((mustBoolean(true) === true) ? (new Trampoline(primitive["shen.f_error"], new Symbol("shen.mult_subst"))) : (err("no cond match"))))) ;}, 3);
defun("shen.shen->kl", function(V419, V420) { return new Trampoline(primitive["compile"], klFun(function(X) { return new Trampoline(primitive["shen.<define>"], X);}, 1), klTailApply(primitive["cons"], V419, V420), klFun(function(X) { return new Trampoline(primitive["shen.shen-syntax-error"], V419, X);}, 1)) ;}, 2);
defun("shen.shen-syntax-error", function(V427, V428) { return (mustBoolean(klTailApply(primitive["cons?"], V428)) === true) ? (new Trampoline(primitive["simple-error"], klTailApply(primitive["cn"], "syntax error in ", klTailApply(primitive["shen.app"], V427, klTailApply(primitive["cn"], " here:\n\n ", klTailApply(primitive["shen.app"], klTailApply(primitive["shen.next-50"], 50, klTailApply(primitive["hd"], V428)), "\n", new Symbol("shen.a"))), new Symbol("shen.a"))))) : ((mustBoolean(true) === true) ? (new Trampoline(primitive["simple-error"], klTailApply(primitive["cn"], "syntax error in ", klTailApply(primitive["shen.app"], V427, "\n", new Symbol("shen.a"))))) : (err("no cond match"))) ;}, 2);
defun("shen.<define>", function(V430) { return (function(){var YaccParse = (function(){var Parse$unshen$do$ltname$gt = klTailApply(primitive["shen.<name>"], V430); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltname$gt))) === true) ? ((function(){var Parse$unshen$do$ltsignature$gt = klTailApply(primitive["shen.<signature>"], Parse$unshen$do$ltname$gt); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltsignature$gt))) === true) ? ((function(){var Parse$unshen$do$ltrules$gt = klTailApply(primitive["shen.<rules>"], Parse$unshen$do$ltsignature$gt); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltrules$gt))) === true) ? (klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$unshen$do$ltrules$gt), klTailApply(primitive["shen.compile_to_machine_code"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltname$gt), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltrules$gt)))) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]));})(); return (mustBoolean(klTailApply(primitive["="], YaccParse, klTailApply(primitive["fail"]))) === true) ? ((function(){var Parse$unshen$do$ltname$gt = klTailApply(primitive["shen.<name>"], V430); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltname$gt))) === true) ? ((function(){var Parse$unshen$do$ltrules$gt = klTailApply(primitive["shen.<rules>"], Parse$unshen$do$ltname$gt); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltrules$gt))) === true) ? (new Trampoline(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$unshen$do$ltrules$gt), klTailApply(primitive["shen.compile_to_machine_code"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltname$gt), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltrules$gt)))) : (new Trampoline(primitive["fail"]));})()) : (new Trampoline(primitive["fail"]));})()) : (YaccParse);})() ;}, 1);
defun("shen.<name>", function(V432) { return (mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], V432))) === true) ? ((function(){var Parse$unX = klTailApply(primitive["hd"], klTailApply(primitive["hd"], V432)); return new Trampoline(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], V432)), klTailApply(primitive["shen.hdtl"], V432))), (mustBoolean((mustBoolean(klTailApply(primitive["symbol?"], Parse$unX)) && mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["shen.sysfunc?"], Parse$unX))))) === true) ? (Parse$unX) : (klTailApply(primitive["simple-error"], klTailApply(primitive["shen.app"], Parse$unX, " is not a legitimate function name.\n", new Symbol("shen.a")))));})()) : (new Trampoline(primitive["fail"])) ;}, 1);
defun("shen.sysfunc?", function(V434) { return new Trampoline(primitive["element?"], V434, klTailApply(primitive["get"], klTailApply(primitive["intern"], "shen"), new Symbol("shen.external-symbols"), klTailApply(primitive["value"], new Symbol("*property-vector*")))) ;}, 1);
defun("shen.<signature>", function(V436) { return (mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], V436))) && mustBoolean(klTailApply(primitive["="], new Symbol("{"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], V436)))))) === true) ? ((function(){var Parse$unshen$do$ltsignature_help$gt = klTailApply(primitive["shen.<signature-help>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], V436)), klTailApply(primitive["shen.hdtl"], V436))); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltsignature_help$gt))) === true) ? ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], Parse$unshen$do$ltsignature_help$gt))) && mustBoolean(klTailApply(primitive["="], new Symbol("}"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], Parse$unshen$do$ltsignature_help$gt)))))) === true) ? (new Trampoline(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], Parse$unshen$do$ltsignature_help$gt)), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltsignature_help$gt))), klTailApply(primitive["shen.demodulate"], klTailApply(primitive["shen.curry-type"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltsignature_help$gt))))) : (new Trampoline(primitive["fail"]))) : (new Trampoline(primitive["fail"]));})()) : (new Trampoline(primitive["fail"])) ;}, 1);
defun("shen.curry-type", function(V438) { return (mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V438)) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], V438))) && mustBoolean((mustBoolean(klTailApply(primitive["="], new Symbol("-->"), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V438)))) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V438)))) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V438))))) && mustBoolean(klTailApply(primitive["="], new Symbol("-->"), klTailApply(primitive["hd"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V438)))))))))))))))) === true) ? (new Trampoline(primitive["shen.curry-type"], klTailApply(primitive["cons"], klTailApply(primitive["hd"], V438), klTailApply(primitive["cons"], new Symbol("-->"), klTailApply(primitive["cons"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V438)), null))))) : ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], V438)) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], V438))) && mustBoolean((mustBoolean(klTailApply(primitive["="], new Symbol("*"), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V438)))) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V438)))) && mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V438))))) && mustBoolean(klTailApply(primitive["="], new Symbol("*"), klTailApply(primitive["hd"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V438)))))))))))))))) === true) ? (new Trampoline(primitive["shen.curry-type"], klTailApply(primitive["cons"], klTailApply(primitive["hd"], V438), klTailApply(primitive["cons"], new Symbol("*"), klTailApply(primitive["cons"], klTailApply(primitive["tl"], klTailApply(primitive["tl"], V438)), null))))) : ((mustBoolean(klTailApply(primitive["cons?"], V438)) === true) ? (new Trampoline(primitive["map"], klFun(function(Z) { return new Trampoline(primitive["shen.curry-type"], Z);}, 1), V438)) : ((mustBoolean(true) === true) ? (V438) : (err("no cond match"))))) ;}, 1);
defun("shen.<signature-help>", function(V440) { return (function(){var YaccParse = (mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], V440))) === true) ? ((function(){var Parse$unX = klTailApply(primitive["hd"], klTailApply(primitive["hd"], V440)); return (function(){var Parse$unshen$do$ltsignature_help$gt = klTailApply(primitive["shen.<signature-help>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], V440)), klTailApply(primitive["shen.hdtl"], V440))); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltsignature_help$gt))) === true) ? ((mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["element?"], Parse$unX, klTailApply(primitive["cons"], new Symbol("{"), klTailApply(primitive["cons"], new Symbol("}"), null))))) === true) ? (klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$unshen$do$ltsignature_help$gt), klTailApply(primitive["cons"], Parse$unX, klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltsignature_help$gt)))) : (klTailApply(primitive["fail"]))) : (klTailApply(primitive["fail"]));})();})()) : (klTailApply(primitive["fail"])); return (mustBoolean(klTailApply(primitive["="], YaccParse, klTailApply(primitive["fail"]))) === true) ? ((function(){var Parse$un$lte$gt = klTailApply(primitive["<e>"], V440); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$un$lte$gt))) === true) ? (new Trampoline(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$un$lte$gt), null)) : (new Trampoline(primitive["fail"]));})()) : (YaccParse);})() ;}, 1);
defun("shen.<rules>", function(V442) { return (function(){var YaccParse = (function(){var Parse$unshen$do$ltrule$gt = klTailApply(primitive["shen.<rule>"], V442); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltrule$gt))) === true) ? ((function(){var Parse$unshen$do$ltrules$gt = klTailApply(primitive["shen.<rules>"], Parse$unshen$do$ltrule$gt); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltrules$gt))) === true) ? (klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$unshen$do$ltrules$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.linearise"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltrule$gt)), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltrules$gt)))) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]));})(); return (mustBoolean(klTailApply(primitive["="], YaccParse, klTailApply(primitive["fail"]))) === true) ? ((function(){var Parse$unshen$do$ltrule$gt = klTailApply(primitive["shen.<rule>"], V442); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltrule$gt))) === true) ? (new Trampoline(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$unshen$do$ltrule$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.linearise"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltrule$gt)), null))) : (new Trampoline(primitive["fail"]));})()) : (YaccParse);})() ;}, 1);
defun("shen.<rule>", function(V444) { return (function(){var YaccParse = (function(){var Parse$unshen$do$ltpatterns$gt = klTailApply(primitive["shen.<patterns>"], V444); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltpatterns$gt))) === true) ? ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt))) && mustBoolean(klTailApply(primitive["="], new Symbol("->"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt)))))) === true) ? ((function(){var Parse$unshen$do$ltaction$gt = klTailApply(primitive["shen.<action>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt)), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpatterns$gt))); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltaction$gt))) === true) ? ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], Parse$unshen$do$ltaction$gt))) && mustBoolean(klTailApply(primitive["="], new Symbol("where"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], Parse$unshen$do$ltaction$gt)))))) === true) ? ((function(){var Parse$unshen$do$ltguard$gt = klTailApply(primitive["shen.<guard>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], Parse$unshen$do$ltaction$gt)), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltaction$gt))); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltguard$gt))) === true) ? (klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$unshen$do$ltguard$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpatterns$gt), klTailApply(primitive["cons"], klTailApply(primitive["cons"], new Symbol("where"), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltguard$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltaction$gt), null))), null)))) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]))) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]))) : (klTailApply(primitive["fail"]));})(); return (mustBoolean(klTailApply(primitive["="], YaccParse, klTailApply(primitive["fail"]))) === true) ? ((function(){var YaccParse$3 = (function(){var Parse$unshen$do$ltpatterns$gt = klTailApply(primitive["shen.<patterns>"], V444); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltpatterns$gt))) === true) ? ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt))) && mustBoolean(klTailApply(primitive["="], new Symbol("->"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt)))))) === true) ? ((function(){var Parse$unshen$do$ltaction$gt = klTailApply(primitive["shen.<action>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt)), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpatterns$gt))); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltaction$gt))) === true) ? (klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$unshen$do$ltaction$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpatterns$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltaction$gt), null)))) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]))) : (klTailApply(primitive["fail"]));})(); return (mustBoolean(klTailApply(primitive["="], YaccParse$3, klTailApply(primitive["fail"]))) === true) ? ((function(){var YaccParse$4 = (function(){var Parse$unshen$do$ltpatterns$gt = klTailApply(primitive["shen.<patterns>"], V444); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltpatterns$gt))) === true) ? ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt))) && mustBoolean(klTailApply(primitive["="], new Symbol("<-"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt)))))) === true) ? ((function(){var Parse$unshen$do$ltaction$gt = klTailApply(primitive["shen.<action>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt)), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpatterns$gt))); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltaction$gt))) === true) ? ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], Parse$unshen$do$ltaction$gt))) && mustBoolean(klTailApply(primitive["="], new Symbol("where"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], Parse$unshen$do$ltaction$gt)))))) === true) ? ((function(){var Parse$unshen$do$ltguard$gt = klTailApply(primitive["shen.<guard>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], Parse$unshen$do$ltaction$gt)), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltaction$gt))); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltguard$gt))) === true) ? (klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$unshen$do$ltguard$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpatterns$gt), klTailApply(primitive["cons"], klTailApply(primitive["cons"], new Symbol("where"), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltguard$gt), klTailApply(primitive["cons"], klTailApply(primitive["cons"], new Symbol("shen.choicepoint!"), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltaction$gt), null)), null))), null)))) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]))) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]))) : (klTailApply(primitive["fail"]));})(); return (mustBoolean(klTailApply(primitive["="], YaccParse$4, klTailApply(primitive["fail"]))) === true) ? ((function(){var Parse$unshen$do$ltpatterns$gt = klTailApply(primitive["shen.<patterns>"], V444); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltpatterns$gt))) === true) ? ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt))) && mustBoolean(klTailApply(primitive["="], new Symbol("<-"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt)))))) === true) ? ((function(){var Parse$unshen$do$ltaction$gt = klTailApply(primitive["shen.<action>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt)), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpatterns$gt))); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltaction$gt))) === true) ? (new Trampoline(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$unshen$do$ltaction$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpatterns$gt), klTailApply(primitive["cons"], klTailApply(primitive["cons"], new Symbol("shen.choicepoint!"), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltaction$gt), null)), null)))) : (new Trampoline(primitive["fail"]));})()) : (new Trampoline(primitive["fail"]))) : (new Trampoline(primitive["fail"]));})()) : (YaccParse$4);})()) : (YaccParse$3);})()) : (YaccParse);})() ;}, 1);
defun("shen.fail_if", function(V447, V448) { return (mustBoolean(klTailApply(V447, V448)) === true) ? (new Trampoline(primitive["fail"])) : (V448) ;}, 2);
defun("shen.succeeds?", function(V454) { return (mustBoolean(klTailApply(primitive["="], V454, klTailApply(primitive["fail"]))) === true) ? (false) : ((mustBoolean(true) === true) ? (true) : (err("no cond match"))) ;}, 1);
defun("shen.<patterns>", function(V456) { return (function(){var YaccParse = (function(){var Parse$unshen$do$ltpattern$gt = klTailApply(primitive["shen.<pattern>"], V456); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltpattern$gt))) === true) ? ((function(){var Parse$unshen$do$ltpatterns$gt = klTailApply(primitive["shen.<patterns>"], Parse$unshen$do$ltpattern$gt); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltpatterns$gt))) === true) ? (klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$unshen$do$ltpatterns$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpattern$gt), klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpatterns$gt)))) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]));})(); return (mustBoolean(klTailApply(primitive["="], YaccParse, klTailApply(primitive["fail"]))) === true) ? ((function(){var Parse$un$lte$gt = klTailApply(primitive["<e>"], V456); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$un$lte$gt))) === true) ? (new Trampoline(primitive["shen.pair"], klTailApply(primitive["hd"], Parse$un$lte$gt), null)) : (new Trampoline(primitive["fail"]));})()) : (YaccParse);})() ;}, 1);
defun("shen.<pattern>", function(V463) { return (function(){var YaccParse = (mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], V463))) && mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)))))) === true) ? ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463)))))) && mustBoolean(klTailApply(primitive["="], new Symbol("@p"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463))))))))) === true) ? ((function(){var Parse$unshen$do$ltpattern1$gt = klTailApply(primitive["shen.<pattern1>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463))))), klTailApply(primitive["shen.hdtl"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463)))))); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltpattern1$gt))) === true) ? ((function(){var Parse$unshen$do$ltpattern2$gt = klTailApply(primitive["shen.<pattern2>"], Parse$unshen$do$ltpattern1$gt); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltpattern2$gt))) === true) ? (klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463)))), klTailApply(primitive["cons"], new Symbol("@p"), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpattern1$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpattern2$gt), null))))) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]))) : (klTailApply(primitive["fail"])); return (mustBoolean(klTailApply(primitive["="], YaccParse, klTailApply(primitive["fail"]))) === true) ? ((function(){var YaccParse$3 = (mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], V463))) && mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)))))) === true) ? ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463)))))) && mustBoolean(klTailApply(primitive["="], new Symbol("cons"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463))))))))) === true) ? ((function(){var Parse$unshen$do$ltpattern1$gt = klTailApply(primitive["shen.<pattern1>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463))))), klTailApply(primitive["shen.hdtl"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463)))))); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltpattern1$gt))) === true) ? ((function(){var Parse$unshen$do$ltpattern2$gt = klTailApply(primitive["shen.<pattern2>"], Parse$unshen$do$ltpattern1$gt); return (mustBoolean(klTailApply(primitive["not"], klTailApply(primitive["="], klTailApply(primitive["fail"]), Parse$unshen$do$ltpattern2$gt))) === true) ? (klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463)))), klTailApply(primitive["cons"], new Symbol("cons"), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpattern1$gt), klTailApply(primitive["cons"], klTailApply(primitive["shen.hdtl"], Parse$unshen$do$ltpattern2$gt), null))))) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]));})()) : (klTailApply(primitive["fail"]))) : (klTailApply(primitive["fail"])); return (mustBoolean(klTailApply(primitive["="], YaccParse$3, klTailApply(primitive["fail"]))) === true) ? ((function(){var YaccParse$4 = (mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], V463))) && mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)))))) === true) ? ((mustBoolean((mustBoolean(klTailApply(primitive["cons?"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463)))))) && mustBoolean(klTailApply(primitive["="], new Symbol("@v"), klTailApply(primitive["hd"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463))))))))) === true) ? ((function(){var Parse$unshen$do$ltpattern1$gt = klTailApply(primitive["shen.<pattern1>"], klTailApply(primitive["shen.pair"], klTailApply(primitive["tl"], klTailApply(primitive["hd"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(primitive["tl"], V463))))), klTailApply(primitive["shen.hdtl"], klTailApply(primitive["shen.pair"], klTailApply(primitive["hd"], klTailApply(primitive["hd"], V463)), klTailApply(primitive["hd"], klTailApply(pri