["%%progn",["%%def",["qua-function","def"],["qua-function","%%def"]],["def",["qua-function","car"],["qua-function","%%car"]],["def",["qua-function","cdr"],["qua-function","%%cdr"]],["def",["qua-function","cons"],["qua-function","%%cons"]],["def",["qua-function","defconstant"],["qua-function","def"]],["def",["qua-function","dynamic"],["qua-function","%%dynamic"]],["def",["qua-function","progv"],["qua-function","%%progv"]],["def",["qua-function","eq"],["qua-function","%%eq"]],["def",["qua-function","eql"],["qua-function","eq"]],["def",["qua-function","eval"],["qua-function","%%eval"]],["def",["qua-function","if"],["qua-function","%%if"]],["def",["qua-function","make-dynamic"],["qua-function","%%make-dynamic"]],["def",["qua-function","make-environment"],["qua-function","%%make-environment"]],["def",["qua-function","panic"],["qua-function","%%panic"]],["def",["qua-function","progn"],["qua-function","%%progn"]],["def",["qua-function","setq"],["qua-function","%%setq"]],["def",["qua-function","make-symbol"],["qua-function","%%make-symbol"]],["def",["qua-function","to-fun-sym"],["qua-function","%%to-fun-sym"]],["def",["qua-function","to-type-sym"],["qua-function","%%to-type-sym"]],["def",["qua-function","function-symbol"],["qua-function","to-fun-sym"]],["def",["qua-function","type-symbol"],["qua-function","to-type-sym"]],["def",["qua-function","unwrap"],["qua-function","%%unwrap"]],["def",["qua-function","wrap"],["qua-function","%%wrap"]],["def",["qua-function","class-of"],["qua-function","%%class-of"]],["def",["qua-function","make-class"],["qua-function","%%make-class"]],["def",["qua-function","send-message"],["qua-function","%%send-message"]],["def",["qua-function","js-apply"],["qua-function","%%js-apply"]],["def",["qua-function","js-function"],["qua-function","%%js-function"]],["def",["qua-function","js-get"],["qua-function","%%js-get"]],["def",["qua-function","js-global"],["qua-function","%%js-global"]],["def",["qua-function","js-new"],["qua-function","%%js-new"]],["def",["qua-function","js-set"],["qua-function","%%js-set"]],["def",["qua-function","own-property?"],["qua-function","%%own-property?"]],["def",["qua-function","list*"],["qua-function","%%list*"]],["def",["qua-function","list-to-js-array"],["qua-function","%%list-to-array"]],["def",["qua-function","js-array-to-list"],["qua-function","%%array-to-list"]],["def",["qua-function","plist-to-js-object"],["qua-function","%%plist-to-js-object"]],["def",["qua-function","reverse-list"],["qua-function","%%reverse-list"]],["def","*print-escape*","%%*print-escape*"],["def",["qua-function","quote"],["%%vau",["operand"],"#ign","operand"]],["def",["qua-function","list"],["wrap",["%%vau","arguments","#ign","arguments"]]],["def",["qua-function","the-environment"],["%%vau","#ign","environment","environment"]],["def",["qua-function","vau"],["%%vau",["params","env-param",".","body"],"env",["eval",["list",["qua-function","%%vau"],"params","env-param",["list*",["qua-function","progn"],"body"]],"env"]]],["def",["qua-function","deffexpr"],["vau",["name","params","env-param",".","body"],"env",["eval",["list",["qua-function","def"],["function-symbol","name"],["list*",["qua-function","vau"],"params","env-param","body"]],"env"],"name"]],["def",["qua-function","make-macro"],["wrap",["vau",["expander"],"#ign",["vau","form","env",["eval",["eval",["cons","expander","form"],["make-environment"]],"env"]]]]],["def",["qua-function","macro"],["make-macro",["vau",["params",".","body"],"#ign",["list",["qua-function","make-macro"],["list*",["qua-function","vau"],"params","#ign","body"]]]]],["def",["qua-function","defmacro"],["macro",["name","params",".","body"],["list",["qua-function","def"],["function-symbol","name"],["list*",["qua-function","macro"],"params","body"]]]],["defmacro","lambda",["params",".","body"],["list",["qua-function","wrap"],["list*",["qua-function","vau"],"params","#ign","body"]]],["defmacro","defun",["name","params",".","body"],["list",["qua-function","def"],["function-symbol","name"],["list*",["qua-function","lambda"],"params","body"]]],["defmacro","lambda/env",["params","env-param",".","body"],["list",["qua-function","wrap"],["list*",["qua-function","vau"],"params","env-param","body"]]],["defmacro","defun/env",["name","params","env-param",".","body"],["list",["qua-function","def"],["function-symbol","name"],["list*",["qua-function","lambda/env"],"params","env-param","body"]]],["defun","optional",["opt-arg",".","opt-default"],["if",["nil?","opt-arg"],["if",["nil?","opt-default"],"#void",["car","opt-default"]],["car","opt-arg"]]],["defun","apply",["fun","arguments",".","opt-env"],["eval",["cons",["unwrap","fun"],"arguments"],["optional","opt-env",["make-environment"]]]],["defun","funcall",["fun",".","arguments"],["apply","fun","arguments"]],["defun","compose",[["qua-function","f"],["qua-function","g"]],["lambda",["arg"],["f",["g","arg"]]]],["defun","identity",["x"],"x"],["defun","symbol?",["sym"],["eq",["class-of","sym"],["class","symbol"]]],["defun","cons?",["cons"],["eq",["class-of","cons"],["class","cons"]]],["defun","nil?",["obj"],["eq","obj",[]]],["defun","null?",["obj"],["eq","obj",null]],["defun","undefined?",["obj"],["eq","obj",null]],["defun","void?",["obj"],["eq","obj","#void"]],["defun","ign?",["obj"],["eq","obj","#ign"]],["def",["qua-function","caar"],["compose",["qua-function","car"],["qua-function","car"]]],["def",["qua-function","cadr"],["compose",["qua-function","car"],["qua-function","cdr"]]],["def",["qua-function","cdar"],["compose",["qua-function","cdr"],["qua-function","car"]]],["def",["qua-function","cddr"],["compose",["qua-function","cdr"],["qua-function","cdr"]]],["defmacro","function",["name"],["function-symbol","name"]],["defmacro","class",["name"],["type-symbol","name"]],["def",["qua-function","type"],["qua-function","class"]],["defun","symbol-name",["sym"],["%%slot-value","sym",["qua-string","name"]]],["defun","map-list",[["qua-function","fun"],"list"],["if",["nil?","list"],[],["cons",["fun",["car","list"]],["map-list",["qua-function","fun"],["cdr","list"]]]]],["def",["qua-function","list-for-each"],["qua-function","map-list"]],["defun","fold-list",[["qua-function","fun"],"init","list"],["if",["nil?","list"],"init",["fold-list",["qua-function","fun"],["fun","init",["car","list"]],["cdr","list"]]]],["defmacro","let",["bindings",".","body"],["list*",["list*",["qua-function","lambda"],["map-list",["qua-function","car"],"bindings"],"body"],["map-list",["qua-function","cadr"],"bindings"]]],["defmacro","let*",["bindings",".","body"],["if",["nil?","bindings"],["list*",["qua-function","let"],[],"body"],["list",["qua-function","let"],["list",["car","bindings"]],["list*",["qua-function","let*"],["cdr","bindings"],"body"]]]],["defmacro","letrec",["bindings",".","body"],["list*",["qua-function","let"],[],["list",["qua-function","def"],["map-list",["qua-function","car"],"bindings"],["list*",["qua-function","list"],["map-list",["qua-function","cadr"],"bindings"]]],"body"]],["defun","var-bindingize",[["fun-name","fun-params",".","fun-body"]],["list",["function-symbol","fun-name"],["list*",["qua-function","lambda"],"fun-params","fun-body"]]],["defmacro","flet",["fun-bindings",".","body"],["list*",["qua-function","let"],["map-list",["qua-function","var-bindingize"],"fun-bindings"],"body"]],["defmacro","labels",["fun-bindings",".","body"],["list*",["qua-function","letrec"],["map-list",["qua-function","var-bindingize"],"fun-bindings"],"body"]],["defun","not",["boolean"],["if","boolean",false,true]],["deffexpr","cond","clauses","env",["if",["nil?","clauses"],"#void",["let",[[[["test",".","body"],".","rest-clauses"],"clauses"]],["if",["eval","test","env"],["eval",["cons",["qua-function","progn"],"body"],"env"],["eval",["cons",["qua-function","cond"],"rest-clauses"],"env"]]]]],["deffexpr","and","ops","env",["cond",[["nil?","ops"],true],[["nil?",["cdr","ops"]],["eval",["car","ops"],"env"]],[["eval",["car","ops"],"env"],["eval",["cons",["qua-function","and"],["cdr","ops"]],"env"]],[true,false]]],["deffexpr","or","ops","env",["cond",[["nil?","ops"],false],[["nil?",["cdr","ops"]],["eval",["car","ops"],"env"]],[["eval",["car","ops"],"env"],true],[true,["eval",["cons",["qua-function","or"],["cdr","ops"]],"env"]]]],["defconstant","+setter-prop+",["qua-string","qua_setter"]],["defun","setter",["obj"],["js-get","obj","+setter-prop+"]],["defun","defsetf",["access-fn","update-fn"],["js-set","access-fn","+setter-prop+","update-fn"]],["defsetf",["qua-function","setter"],["lambda",["new-setter","getter"],["js-set","getter","+setter-prop+","new-setter"]]],["defmacro","setf",["place","new-val"],["if",["symbol?","place"],["list",["qua-function","setq"],"place","new-val"],["let*",[[["getter-form",".","arguments"],"place"],["getter",["if",["symbol?","getter-form"],["function-symbol","getter-form"],"getter-form"]]],["list*",["list",["qua-function","setter"],"getter"],"new-val","arguments"]]]],["defmacro","incf",["place",".","opt-increment"],["let",[["increment",["optional","opt-increment",1]]],["list",["qua-function","setf"],"place",["list",["qua-function","+"],"place","increment"]]]],["defmacro","decf",["place",".","opt-decrement"],["let",[["decrement",["optional","opt-decrement",1]]],["list",["qua-function","setf"],"place",["list",["qua-function","-"],"place","decrement"]]]],["defun","js-relational-op",["name"],["let",[[["qua-function","binop"],["%%js-binop","name"]]],["labels",[["op",["arg1","arg2",".","rest"],["if",["binop","arg1","arg2"],["if",["nil?","rest"],true,["apply",["qua-function","op"],["list*","arg2","rest"]]],false]]],["qua-function","op"]]]],["def",["qua-function","=="],["js-relational-op",["qua-string","=="]]],["def",["qua-function","==="],["js-relational-op",["qua-string","==="]]],["def",["qua-function","<"],["js-relational-op",["qua-string","<"]]],["def",["qua-function",">"],["js-relational-op",["qua-string",">"]]],["def",["qua-function","<="],["js-relational-op",["qua-string","<="]]],["def",["qua-function",">="],["js-relational-op",["qua-string",">="]]],["def",["qua-function","lt"],["qua-function","<"]],["def",["qua-function","lte"],["qua-function","<="]],["def",["qua-function","gt"],["qua-function",">"]],["def",["qua-function","gte"],["qua-function",">="]],["defun","!=","arguments",["not",["apply",["qua-function","=="],"arguments"]]],["defun","!==","arguments",["not",["apply",["qua-function","==="],"arguments"]]],["def",["qua-function","*"],["let",[[["qua-function","binop"],["%%js-binop",["qua-string","*"]]]],["lambda","arguments",["fold-list",["qua-function","binop"],1,"arguments"]]]],["def",["qua-function","+"],["let",[[["qua-function","binop"],["%%js-binop",["qua-string","+"]]]],["lambda","arguments",["if",["nil?","arguments"],0,["fold-list",["qua-function","binop"],["car","arguments"],["cdr","arguments"]]]]]],["def",["qua-function","conc"],["qua-function","+"]],["defun","js-negative-op",["name","unit"],["let",[[["qua-function","binop"],["%%js-binop","name"]]],["lambda",["arg1",".","rest"],["if",["nil?","rest"],["binop","unit","arg1"],["fold-list",["qua-function","binop"],"arg1","rest"]]]]],["def",["qua-function","-"],["js-negative-op",["qua-string","-"],0]],["def",["qua-function","/"],["js-negative-op",["qua-string","/"],1]],["defun/env","find-class",["class-desig"],"env",["eval",["type-symbol","class-desig"],"env"]],["defun","make-instance",["class-desig",".","initargs"],["%%make-instance",["find-class","class-desig"],["plist-to-js-object","initargs"]]],["deffexpr","defgeneric",["name",".","#ign"],"env",["let",[["generic",["lambda","arguments",["send-message",["car","arguments"],["symbol-name","name"],"arguments"]]]],["eval",["list",["qua-function","def"],["function-symbol","name"],"generic"],"env"]]],["deffexpr","defmethod",["name",[["self","class-spec"],".","arguments"],".","body"],"env",["let",[["class",["find-class","class-spec"]],["method",["eval",["list*",["qua-function","lambda"],["list*","self","arguments"],"body"],"env"]]],["%%put-method","class",["symbol-name","name"],"method"]]],["deffexpr","defstruct",["name",".","slot-names"],"env",["let*",[["class-name",["symbol-name","name"]],["class",["make-class",["class","structure-class"],"class-name"]]],["eval",["list",["qua-function","def"],["type-symbol","name"],"class"],"env"],["list-for-each",["lambda",["slot-name"],["let",[["accessor-name",["function-symbol",["make-symbol",["+",["symbol-name","name"],["qua-string","-"],["symbol-name","slot-name"]]]]]],["flet",[["reader",["obj"],["slot-value","obj","slot-name"]],["writer",["val","obj"],["set-slot-value","obj","slot-name","val"]]],["defsetf",["qua-function","reader"],["qua-function","writer"]],["eval",["list",["qua-function","def"],"accessor-name",["qua-function","reader"]],"env"]]]],"slot-names"],"name"]],["defmacro","deftype",["name","value"],["list",["qua-function","def"],["type-symbol","name"],"value"]],["defun","slot-value",["obj","name"],["%%slot-value","obj",["symbol-name","name"]]],["defun","set-slot-value",["obj","name","value"],["%%set-slot-value","obj",["symbol-name","name"],"value"]],["defun","slot-bound?",["obj","name"],["%%slot-bound?","obj",["symbol-name","name"]]],["defsetf",["qua-function","slot-value"],["lambda",["new-val","obj","slot-name"],["set-slot-value","obj","slot-name","new-val"]]],["defun","slot-void?",["obj","slot-name"],["if",["slot-bound?","obj","slot-name"],["void?",["slot-value","obj","slot-name"]],true]],["defgeneric","compute-method",["class","receiver","message","arguments"]],["defmacro","loop","body",["list",["qua-function","%%loop"],["list*",["qua-function","progn"],"body"]]],["deffexpr","while",["test",".","body"],"env",["let",[["body",["list*",["qua-function","progn"],"body"]]],["block","exit",["loop",["if",["eval","test","env"],["eval","body","env"],["return-from","exit"]]]]]],["defmacro","until",["test",".","body"],["list*",["qua-function","while"],["list",["qua-function","not"],"test"],"body"]],["defun","dotimes*",["n",["qua-function","thunk"]],["let",[["i",0]],["while",["<","i","n"],["thunk","i"],["incf","i"]]]],["defmacro","dotimes",[["var","count-form",".","opt-result-form"],".","body"],["let",[["result-form",["optional","opt-result-form"]]],["list",["qua-function","progn"],["list",["qua-function","dotimes*"],"count-form",["list*",["qua-function","lambda"],["list","var"],"body"]],"result-form"]]],["defmacro","if",["test","then","else"],["list",["qua-function","%%if"],"test","then","else"]],["defmacro","when",["test",".","body"],["list",["qua-function","if"],"test",["list*",["qua-function","progn"],"body"],"#void"]],["defmacro","unless",["test",".","body"],["list",["qua-function","if"],"test","#void",["list*",["qua-function","progn"],"body"]]],["defun","call-with-escape",[["qua-function","fn"]],["labels",[["escape","opt-val",["%%raise",["make-instance",["quote","%%tag"],["qua-keyword","id"],["qua-function","escape"],["qua-keyword","val"],["optional","opt-val"]]]]],["%%rescue",["lambda",["exc"],["if",["and",["eq",["class-of","exc"],["class","%%tag"]],["eq",["slot-value","exc",["quote","id"]],["qua-function","escape"]]],["slot-value","exc",["quote","val"]],["%%raise","exc"]]],["lambda",[],["fn",["qua-function","escape"]]]]]],["defmacro","block",["name",".","body"],["list",["qua-function","call-with-escape"],["list*",["qua-function","lambda"],["list","name"],"body"]]],["defun","return-from",["escape",".","opt-val"],["apply","escape","opt-val"]],["deffexpr","prog1","forms","env",["if",["nil?","forms"],"#void",["let",[["result",["eval",["car","forms"],"env"]]],["eval",["list*",["qua-function","progn"],["cdr","forms"]],"env"],"result"]]],["defmacro","prog2",["form",".","forms"],["list",["qua-function","progn"],"form",["list*",["qua-function","prog1"],"forms"]]],["deffexpr","unwind-protect",["protected-form",".","cleanup-forms"],"env",["prog1",["%%rescue",["lambda",["exc"],["eval",["list*",["qua-function","progn"],"cleanup-forms"],"env"],["%%raise","exc"]],["lambda",[],["eval","protected-form","env"]]],["eval",["list*",["qua-function","progn"],"cleanup-forms"],"env"]]],["deffexpr","case",["expr",".","clauses"],"env",["let",[["val",["eval","expr","env"]]],["block","match",["list-for-each",["lambda",[["other-val",".","body"]],["when",["eql","val",["eval","other-val","env"]],["return-from","match",["eval",["list*",["qua-function","progn"],"body"],"env"]]]],"clauses"],"#void"]]],["defmacro","push-prompt",["prompt",".","body"],["list",["qua-function","%%push-prompt"],"prompt",["list*",["qua-function","lambda"],[],"body"]]],["defmacro","take-subcont",["prompt","name",".","body"],["list",["qua-function","%%take-subcont"],"prompt",["list*",["qua-function","lambda"],["list","name"],"body"]]],["defmacro","push-subcont",["continuation",".","body"],["list",["qua-function","%%push-subcont"],"continuation",["list*",["qua-function","lambda"],[],"body"]]],["defmacro","push-prompt-subcont",["prompt","continuation",".","body"],["list",["qua-function","%%push-prompt-subcont"],"prompt","continuation",["list*",["qua-function","lambda"],[],"body"]]],["defconstant","+default-prompt+",["qua-keyword","default-prompt"]],["defmacro","coroutine","body",["list*",["qua-function","push-prompt"],"+default-prompt+","body"]],["defmacro","yield",["name",".","body"],["list*",["qua-function","take-subcont"],"+default-prompt+","name","body"]],["defmacro","resume",["continuation",".","body"],["list*",["qua-function","push-prompt-subcont"],"+default-prompt+","continuation","body"]],["defmacro","defdynamic",["name",".","opt-val"],["list",["qua-function","def"],"name",["list",["qua-function","make-dynamic"],["optional","opt-val"]]]],["deffexpr","dynamic-bind",["bindings",".","body"],"env",["let",[["pairs",["map-list",["lambda",[["dynamic-name","expr"]],["cons",["eval","dynamic-name","env"],["eval","expr","env"]]],"bindings"]]],["labels",[["process-pairs",["pairs"],["if",["nil?","pairs"],["eval",["list*",["qua-function","progn"],"body"],"env"],["let*",[[[["dynamic",".","value"],".","rest-pairs"],"pairs"]],["progv","dynamic","value",["lambda",[],["process-pairs","rest-pairs"]]]]]]],["process-pairs","pairs"]]]],["defun","js-getter",["prop-name"],["flet",[["getter",["obj"],["js-get","obj","prop-name"]]],["defsetf",["qua-function","getter"],["lambda",["new-val","obj"],["js-set","obj","prop-name","new-val"]]],["qua-function","getter"]]],["defun","js-invoker",["method-name"],["lambda",["this",".","arguments"],["let",[["js-fun",["js-get","this","method-name"]]],["js-apply","js-fun","this",["list-to-js-array","arguments"]]]]],["defun","js-object","plist",["plist-to-js-object","plist"]],["defun","js-array","elements",["list-to-js-array","elements"]],["defun","js-array-empty?",["array"],["not",[["js-getter",["qua-string","length"]],"array"]]],["defmacro","js-lambda",["lambda-list",".","body"],["list",["qua-function","js-function"],["list",["qua-function","lambda"],"lambda-list",["list",["qua-function","%%continuation-barrier"],["list",["qua-function","push-userspace"],["list*",["qua-function","progn"],"body"]]]]]],["def",["qua-function","function"],["qua-function","js-lambda"]],["defun","list-length",["list"],["if",["nil?","list"],0,["+",1,["list-length",["cdr","list"]]]]],["defun","list-elt",["list","i"],["if",["eql","i",0],["car","list"],["list-elt",["cdr","list"],["-","i",1]]]],["defun","filter-list",[["qua-function","pred?"],"list"],["if",["nil?","list"],["quote",[]],["if",["pred?",["car","list"]],["cons",["car","list"],["filter-list",["qua-function","pred?"],["cdr","list"]]],["filter-list",["qua-function","pred?"],["cdr","list"]]]]],["defun","append-lists",["list-1","list-2"],["if",["nil?","list-1"],"list-2",["cons",["car","list-1"],["append-lists",["cdr","list-1"],"list-2"]]]],["defgeneric","type?",["obj","type-spec"]],["defmethod","type?",[["obj","object"],"type-spec"],["default-type?","obj","type-spec"]],["defun","default-type?",["obj","type-spec"],["if",["eq","type-spec","#any"],true,["let",[["c",["find-class","type-spec"]]],["or",["eq","c",["class","object"]],["eq","c",["class-of","obj"]]]]]],["deffexpr","typecase",["expr",".","clauses"],"env",["let",[["val",["eval","expr","env"]]],["block","match",["list-for-each",["lambda",[["type-spec",".","body"]],["if",["eq","type-spec","#any"],["return-from","match",["eval",["list*",["qua-function","progn"],"body"],"env"]],["when",["type?","val","type-spec"],["return-from","match",["eval",["list*",["qua-function","progn"],"body"],"env"]]]]],"clauses"],"#void"]]],["defstruct","type-mismatch-error","type-spec","obj"],["deffexpr","the",["type-spec","obj"],"env",["let",[["evaluated-obj",["eval","obj","env"]]],["if",["type?","evaluated-obj","type-spec"],"evaluated-obj",["error",["make-instance",["quote","type-mismatch-error"],["qua-keyword","type-spec"],"type-spec",["qua-keyword","obj"],"evaluated-obj"]]]]],["defstruct","handler-frame","handlers","parent"],["defun","make-handler-frame",["handlers","parent"],["make-instance",["quote","handler-frame"],["qua-keyword","handlers"],"handlers",["qua-keyword","parent"],"parent"]],["defstruct","condition-handler","condition-type","handler-function"],["defun","make-condition-handler",["condition-type","handler-function"],["the","function","handler-function"],["make-instance",["quote","condition-handler"],["qua-keyword","condition-type"],"condition-type",["qua-keyword","handler-function"],"handler-function"]],["defstruct","restart-handler","restart-name","handler-function","associated-condition","interactive-function"],["defun","make-restart-handler",["restart-name","handler-function","interactive-function","associated-condition"],["the","symbol","restart-name"],["the","function","handler-function"],["the","function","interactive-function"],["make-instance",["quote","restart-handler"],["qua-keyword","restart-name"],"restart-name",["qua-keyword","handler-function"],"handler-function",["qua-keyword","associated-condition"],"associated-condition",["qua-keyword","interactive-function"],"interactive-function"]],["defdynamic","*condition-handler-frame*"],["defdynamic","*restart-handler-frame*"],["defun","apply-handler-function",["handler","arguments"],["apply",["slot-value","handler",["quote","handler-function"]],"arguments"]],["defun","make-handler-bind-operator",[["qua-function","handler-spec-parser"],"handler-frame-dynamic"],["vau",["handler-specs",".","body"],"env",["let*",[["handlers",["map-list",["lambda",["spec"],["handler-spec-parser","spec","env"]],"handler-specs"]],["handler-frame",["make-handler-frame","handlers",["dynamic","handler-frame-dynamic"]]]],["progv","handler-frame-dynamic","handler-frame",["lambda",[],["eval",["list*",["qua-function","progn"],"body"],"env"]]]]]],["def",["qua-function","handler-bind"],["make-handler-bind-operator",["lambda",[["class-name","function-form"],"env"],["make-condition-handler","class-name",["eval","function-form","env"]]],"*condition-handler-frame*"]],["def",["qua-function","restart-bind"],["make-handler-bind-operator",["lambda",[["restart-name","function-form",".","keywords"],"env"],["let*",[["dict",["plist-to-js-object","keywords"]],["interactive-function",["if",["own-property?","dict",["qua-string","interactive-function"]],["eval",[["js-getter",["qua-string","interactive-function"]],"dict"],"env"],["lambda",[],["quote",[]]]]],["associated-condition",["if",["own-property?","dict",["qua-string","associated-condition"]],["eval",[["js-getter",["qua-string","associated-condition"]],"dict"],"env"],"#void"]]],["make-restart-handler","restart-name",["eval","function-form","env"],"interactive-function","associated-condition"]]],"*restart-handler-frame*"]],["defun","signal",["condition"],["signal-condition","condition",["dynamic","*condition-handler-frame*"],["list","condition"]]],["defun","warn",["condition"],["signal","condition"],["print","condition"]],["defun","error",["condition"],["signal","condition"],["invoke-debugger","condition"]],["defstruct","restart-not-found","restart-designator"],["defun","restart-not-found",["restart-designator"],["make-instance",["quote","restart-not-found"],["qua-keyword","restart-designator"],"restart-designator"]],["defun","invoke-restart",["restart-designator",".","arguments"],["cond",[["symbol?","restart-designator"],["signal-condition","restart-designator",["dynamic","*restart-handler-frame*"],"arguments"]],[["type?","restart-designator",["quote","restart-handler"]],["apply-handler-function","restart-designator","arguments"]],[true,["error",["restart-not-found","restart-designator"]]]]],["defun","signal-condition",["condition","dynamic-frame","arguments"],["let",[["handler-and-frame",["find-applicable-handler","condition","dynamic-frame","#void"]]],["if",["void?","handler-and-frame"],"#void",["let",[[["handler","frame"],"handler-and-frame"]],["call-condition-handler","handler","frame","arguments"],["signal-condition","condition",["slot-value","frame",["quote","parent"]],"arguments"]]]]],["defun","find-applicable-handler",["condition","dynamic-frame","payload"],["if",["void?","dynamic-frame"],"#void",["block","found",["list-for-each",["lambda",["handler"],["when",["condition-applicable?","handler","condition","payload"],["return-from","found",["list","handler","dynamic-frame"]]]],["slot-value","dynamic-frame",["quote","handlers"]]],["find-applicable-handler","condition",["slot-value","dynamic-frame",["quote","parent"]],"payload"]]]],["defun","find-restart",["restart-name",".","opt-condition"],["the","symbol","restart-name"],["let*",[["associated-condition",["optional","opt-condition"]],["handler-and-frame",["find-applicable-handler","restart-name",["dynamic","*restart-handler-frame*"],"associated-condition"]]],["if",["void?","handler-and-frame"],"#void",["let",[[["handler","#ign"],"handler-and-frame"]],"handler"]]]],["defgeneric","condition-applicable?",["handler","condition","payload"]],["defmethod","condition-applicable?",[["handler","condition-handler"],"condition","#ign"],["type?","condition",["slot-value","handler",["quote","condition-type"]]]],["defmethod","condition-applicable?",[["handler","restart-handler"],"restart-name","associated-condition"],["and",["eql",["symbol-name","restart-name"],["symbol-name",["slot-value","handler",["quote","restart-name"]]]],["or",["void?","associated-condition"],["slot-void?","handler",["quote","associated-condition"]],["eq","associated-condition",["slot-value","handler",["quote","associated-condition"]]]]]],["defgeneric","call-condition-handler",["handler","handler-frame","arguments"]],["defmethod","call-condition-handler",[["handler","condition-handler"],"handler-frame","arguments"],["dynamic-bind",[["*condition-handler-frame*",["slot-value","handler-frame",["quote","parent"]]]],["apply-handler-function","handler","arguments"]]],["defmethod","call-condition-handler",[["handler","restart-handler"],"handler-frame","arguments"],["apply-handler-function","handler","arguments"]],["defun","compute-restarts","opt-condition",["reverse-list",["do-compute-restarts",["optional","opt-condition"],["quote",[]],["dynamic","*restart-handler-frame*"]]]],["defun","do-compute-restarts",["condition","restart-list","handler-frame"],["if",["void?","handler-frame"],"restart-list",["let",[["restarts",["filter-list",["lambda",["handler"],["or",["void?","condition"],["slot-void?","handler",["quote","associated-condition"]],["eq",["slot-value","handler",["quote","associated-condition"]],"condition"]]],["slot-value","handler-frame",["quote","handlers"]]]]],["do-compute-restarts","condition",["append-lists","restarts","restart-list"],["slot-value","handler-frame",["quote","parent"]]]]]],["defun","invoke-restart-interactively",["restart-designator"],["let*",[["restart",["cond",[["symbol?","restart-designator"],["let",[["restart",["find-restart","restart-designator"]]],["if",["void?","restart"],["error",["restart-not-found","restart-designator"]],"restart"]]],[["type?","restart-designator",["quote","restart-handler"]],"restart-designator"],[true,["error",["restart-not-found","restart-designator"]]]]],["arguments",["funcall",["slot-value","restart",["quote","interactive-function"]]]]],["apply",["qua-function","invoke-restart"],["list*","restart","arguments"]]]],["defstruct","simple-error","message"],["defun","simple-error",["message"],["error",["make-instance",["quote","simple-error"],["qua-keyword","message"],"message"]]],["defgeneric","start-iteration",["sequence"]],["defgeneric","more?",["sequence","iteration-state"]],["defgeneric","current",["sequence","iteration-state"]],["defgeneric","advance",["sequence","iteration-state"]],["defgeneric","empty-clone",["sequence"]],["defgeneric","add-for-iteration",["sequence","element"]],["defgeneric","finish-clone",["sequence"]],["defun","for-each",[["qua-function","fn"],"seq"],["let",[["state",["start-iteration","seq"]]],["while",["more?","seq","state"],["fn",["current","seq","state"]],["setq","state",["advance","seq","state"]]]]],["defun","map",[["qua-function","fn"],"seq"],["let",[["result",["empty-clone","seq"]],["state",["start-iteration","seq"]]],["while",["more?","seq","state"],["setq","result",["add-for-iteration","result",["fn",["current","seq","state"]]]],["setq","state",["advance","seq","state"]]],["finish-clone","result"]]],["defun","subseq",["seq","start",".","opt-end"],["the","number","start"],["let",[["end",["optional","opt-end"]]],["unless",["or",["void?","end"],[">=","end","start"]],["simple-error",["qua-string","End must be greater than or equal to start"]]],["let",[["result",["empty-clone","seq"]],["state",["start-iteration","seq"]]],["let",[["skip","start"]],["while",["and",["more?","seq","state"],[">","skip",0]],["setq","state",["advance","seq","state"]],["decf","skip"]]],["let",[["ct",0]],["while",["and",["more?","seq","state"],["or",["void?","end"],["<","ct",["-","end","start"]]]],["setq","result",["add-for-iteration","result",["current","seq","state"]]],["setq","state",["advance","seq","state"]],["incf","ct"]]],["finish-clone","result"]]]],["defmethod","start-iteration",[["self","cons"]],"self"],["defmethod","more?",[["self","cons"],"state"],["cons?","state"]],["defmethod","current",[["self","cons"],"state"],["car","state"]],["defmethod","advance",[["self","cons"],"state"],["cdr","state"]],["defmethod","empty-clone",[["self","cons"]],[]],["defmethod","add-for-iteration",[["self","cons"],"elt"],["cons","elt","self"]],["defmethod","finish-clone",[["self","cons"]],["reverse-list","self"]],["defmethod","start-iteration",[["self","nil"]],[]],["defmethod","more?",[["self","nil"],"state"],false],["defmethod","current",[["self","nil"],"state"],["simple-error",["qua-string","At end"]]],["defmethod","advance",[["self","nil"],"state"],["simple-error",["qua-string","Can't advance past end"]]],["defmethod","empty-clone",[["self","nil"]],[]],["defmethod","add-for-iteration",[["self","nil"],"elt"],["cons","elt","self"]],["defmethod","finish-clone",[["self","nil"]],[]],["defmethod","start-iteration",[["self","js-array"]],0],["defmethod","more?",[["self","js-array"],"state"],["lt","state",[["js-getter",["qua-string","length"]],"self"]]],["defmethod","current",[["self","js-array"],"state"],["js-get","self","state"]],["defmethod","advance",[["self","js-array"],"state"],["+","state",1]],["defmethod","empty-clone",[["self","js-array"]],["js-array"]],["defmethod","add-for-iteration",[["self","js-array"],"elt"],[["js-invoker",["qua-string","push"]],"self","elt"],"self"],["defmethod","finish-clone",[["self","js-array"]],"self"],["defgeneric","read-string-from-stream",["stream"]],["defgeneric","write-string-to-stream",["stream","string"]],["defdynamic","*standard-input*"],["defdynamic","*standard-output*"],["defun","print-object",["self","stream"],["write-string-to-stream","stream",["%%object-to-string","self"]]],["defun","read","opt-stream",["let*",[["stream",["optional","opt-stream",["dynamic","*standard-input*"]]],["string",["read-string-from-stream","stream"]]],["%%parse-forms","string"]]],["defun","write",["object",".","opt-stream"],["let*",[["stream",["optional","opt-stream",["dynamic","*standard-output*"]]]],["if",["void?","stream"],["%%print","object"],["print-object","object","stream"]]]],["defun","print",["object",".","opt-stream"],["let*",[["stream",["optional","opt-stream",["dynamic","*standard-output*"]]]],["if",["void?","stream"],["%%print","object"],["progn",["dynamic-bind",[["*print-escape*",false]],["write","object","stream"],["write-string-to-stream","stream",["qua-string","\n"]]]]]]],["defun","prin1",["object",".","opt-stream"],["let*",[["stream",["optional","opt-stream",["dynamic","*standard-output*"]]]],["if",["void?","stream"],["progn",["%%print",["qua-string","you have no stdout"]],["%%print","object"]],["progn",["dynamic-bind",[["*print-escape*",true]],["write","object","stream"],["write-string-to-stream","stream",["qua-string","\n"]]]]]]],["defconstant","+user-prompt+",["qua-keyword","user-prompt"]],["deffexpr","push-userspace","body","env",["push-prompt","+user-prompt+",["dynamic-bind",[["*standard-input*",["%arch-standard-input"]],["*standard-output*",["%arch-standard-output"]]],["eval",["list*",["qua-function","progn"],"body"],"env"]]]],["defmacro","js-callback",["params",".","body"],["list",["qua-function","js-lambda"],"params",["list*",["qua-function","push-userspace"],"body"]]],["def",["qua-function","callback"],["qua-function","js-callback"]],["defun","log","args",["apply",["js-invoker",["qua-string","log"]],["list*",["js-global",["qua-string","console"]],"args"]]],["defun","invoke-debugger",["condition"],["def","k",["get-current-continuation"]],["print",["qua-string",""]],["print",["qua-string","Welcome to the debugger!"]],["loop",["block","continue",["print",["qua-string","Condition: "]],["print","condition"],["print",["qua-string","Stack: "]],["print-stacktrace","k"],["let",[["restarts",["compute-restarts","condition"]]],["if",[">",["list-length","restarts"],0],["progn",["print",["qua-string","Restarts:"]],["let",[["i",0]],["list-for-each",["lambda",["restart"],["print",["+","i",["qua-string",": "],["symbol-name",["slot-value","restart",["quote","restart-name"]]]]],["incf","i"]],"restarts"],["print",["qua-string","Enter a restart number:"]],["let*",[["n",["car",["read"]]]],["if",[["js-global",["qua-string","isNaN"]],"n"],["progn",["print",["qua-string","You didn't enter a number. Please try again."]],["return-from","continue"]],["invoke-restart-interactively",["list-elt","restarts","n"]]]]]],["panic","condition"]]]]]],["defun","continuation-to-list",["k"],["block","end",["let",[["list",["quote",[]]]],["loop",["setq","list",["cons","k","list"]],["if",["eq",null,[["js-getter",["qua-string","inner"]],"k"]],["return-from","end","list"],["setq","k",[["js-getter",["qua-string","inner"]],"k"]]]]]]],["defun","get-current-continuation",[],["take-subcont","+user-prompt+","k",["push-prompt-subcont","+user-prompt+","k","k"]]],["defconstant","+qua-magic-frames+",6],["defun","print-stacktrace",["k"],["for-each",["lambda",["frame"],["if",[["js-getter",["qua-string","dbg_info"]],"frame"],["prin1",[["js-getter",["qua-string","expr"]],[["js-getter",["qua-string","dbg_info"]],"frame"]]],["print",["qua-string","* Mystery continuation (please report bug)"]]]],["subseq",["continuation-to-list","k"],"+qua-magic-frames+",["+","+qua-magic-frames+",10]]]],["defun","node:require",["module"],["%%require",[["js-invoker",["qua-string","resolve"]],["qua-function","%%require"],"module",["js-object",["qua-keyword","paths"],["js-array",["qua-string","."]]]]]],["defun","node:require-vm-relative",["module"],["%%require","module"]],["defstruct","node-input-stream"],["defstruct","node-output-stream"],["defconstant","+node-stdout+",[["js-getter",["qua-string","stdout"]],["js-global",["qua-string","process"]]]],["defmethod","read-string-from-stream",[["stream","node-input-stream"]],["%%read-line"]],["defmethod","write-string-to-stream",[["stream","node-output-stream"],"string"],[["js-invoker",["qua-string","write"]],"+node-stdout+","string"]],["defun","%arch-standard-input",[],["make-instance",["quote","node-input-stream"]]],["defun","%arch-standard-output",[],["make-instance",["quote","node-output-stream"]]],["defconstant","node:path",["node:require",["qua-string","path"]]],["def",["qua-function","node:dirname"],[["js-getter",["qua-string","dirname"]],"node:path"]],["def",["qua-function","node:join-paths"],[["js-getter",["qua-string","join"]],"node:path"]],["defconstant","node:fs",["node:require",["qua-string","fs"]]],["def",["qua-function","node:read-file-sync"],[["js-getter",["qua-string","readFileSync"]],"node:fs"]],["def",["qua-function","node:write-file-sync"],[["js-getter",["qua-string","writeFileSync"]],"node:fs"]],["def",["qua-function","node:create-write-stream"],[["js-getter",["qua-string","createWriteStream"]],"node:fs"]],["defun","read-file-as-string",["path"],["node:read-file-sync","path",["qua-string","utf8"]]],["defun","read-file",["path"],["list*",["qua-function","progn"],["%%parse-forms",["read-file-as-string","path"]]]],["defun/env","load",["path",".","opt-env"],"denv",["eval",["read-file","path"],["optional","opt-env","denv"]]],["defun/env","load-system",["path",".","opt-env"],"denv",["let*",[["env",["optional","opt-env","denv"]],[["qua-function","defsystem"],["vau",["name",["qua-keyword","depends-on"],"deps",["qua-keyword","components"],"components"],"#ign",["list-for-each",["lambda",["dep"],["load-system",["node:join-paths",["node:dirname","path"],"dep"],"env"]],"deps"],["list-for-each",["lambda",["component"],["load",["node:join-paths",["node:dirname","path"],"component"],"env"]],"components"]]]],["load","path"]]]]