diff --git a/bootstrap/newt.js b/bootstrap/newt.js index c51009f..d6b6345 100644 --- a/bootstrap/newt.js +++ b/bootstrap/newt.js @@ -233,7 +233,7 @@ const Lib_Prettier_flatten = ( _$$0 ) => (bouncer(Lib_Prettier_REC_flatten, { ta const Lib_Prettier_group = ( _$$0 ) => (Lib_Prettier_Alt(Lib_Prettier_flatten(_$$0), _$$0)); const Lib_Prettier_bracket = ( _$$0, _$$1, _$$2 ) => (Lib_Prettier_group(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text(_$$0))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_nest(2)(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_line)(_$$1)))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_line)(Lib_Prettier_text(_$$2)))))); const Lib_Types_parens = ( _$$0, _$$1, _$$2 ) => { const sc$$3 = Prelude__$3C_(null, Prelude_Prelude_Ord$20Prim_Int, _$$0, _$$1); switch (sc$$3) { case "False": return _$$2; case "True": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(_$$2)(Lib_Prettier_text(")"))); } }; -const Lib_Compile_expToDoc = ( _$$0 ) => { switch (_$$0.tag) { case "Raw": return Lib_Prettier_text(_$$0.h0); case "Dot": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_$$0.h0))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("."))(Lib_Compile_jsIdent(_$$0.h1))); case "Index": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_$$0.h0))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_$$0.h1))(Lib_Prettier_text(" :: Nil)")))); case "JUndefined": return Lib_Prettier_text("null"); case "JPrimOp": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Types_parens(0, 1, Lib_Compile_expToDoc(_$$0.h1)))(Lib_Prettier_text(_$$0.h0)))(Lib_Types_parens(0, 1, Lib_Compile_expToDoc(_$$0.h2))); case "JLam": { const _sc$$0 = _$$0.h1; switch (_sc$$0.tag) { case "JReturn": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Lib_Prettier_commaSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Compile_jsIdent)(_$$0.h0))))(Lib_Prettier_text(") =>")))(Lib_Prettier_text("(")))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_sc$$0.h0))(Lib_Prettier_text(")"))); default: return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Lib_Prettier_commaSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Compile_jsIdent)(_$$0.h0))))(Lib_Prettier_text(") =>")))(Lib_Prettier_bracket("{", Lib_Compile_stmtToDoc(null, _$$0.h1), "}")); } break; } case "Var": return Lib_Compile_jsIdent(_$$0.h0); case "Apply": { const _sc$$0 = _$$0.h0; switch (_sc$$0.tag) { case "JLam": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_$$0.h0))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text(")"))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_nest(2)(Lib_Prettier_commaSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Compile_expToDoc)(_$$0.h1))))(Lib_Prettier_text(")")))))); default: return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_$$0.h0))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_nest(2)(Lib_Prettier_commaSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Compile_expToDoc)(_$$0.h1))))(Lib_Prettier_text(")")))); } break; } case "LitInt": return Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$0.h0)); case "LitString": return Lib_Prettier_text(Lib_Common_quoteString(_$$0.h0)); case "LitObject": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("{"))(Lib_Prettier_folddoc(( a ) => (( e ) => (Lib_Prettier__$3C$2B$2F$3E_(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(a)(Lib_Prettier_text(", ")), e))), Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_Compile_expToDoc_entry(_$$0, _$$0.h0, null, eta)))(_$$0.h0))))(Lib_Prettier_text("}")); case "LitArray": return Prelude_fatalError(null, "TODO - LitArray to doc"); } }; +const Lib_Compile_expToDoc = ( _$$0 ) => { switch (_$$0.tag) { case "Raw": return Lib_Prettier_text(_$$0.h0); case "Dot": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_$$0.h0))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("."))(Lib_Compile_jsIdent(_$$0.h1))); case "Index": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_$$0.h0))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("["))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_$$0.h1))(Lib_Prettier_text("]")))); case "JUndefined": return Lib_Prettier_text("null"); case "JPrimOp": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Types_parens(0, 1, Lib_Compile_expToDoc(_$$0.h1)))(Lib_Prettier_text(_$$0.h0)))(Lib_Types_parens(0, 1, Lib_Compile_expToDoc(_$$0.h2))); case "JLam": { const _sc$$0 = _$$0.h1; switch (_sc$$0.tag) { case "JReturn": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Lib_Prettier_commaSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Compile_jsIdent)(_$$0.h0))))(Lib_Prettier_text(") =>")))(Lib_Prettier_text("(")))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_sc$$0.h0))(Lib_Prettier_text(")"))); default: return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Lib_Prettier_commaSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Compile_jsIdent)(_$$0.h0))))(Lib_Prettier_text(") =>")))(Lib_Prettier_bracket("{", Lib_Compile_stmtToDoc(null, _$$0.h1), "}")); } break; } case "Var": return Lib_Compile_jsIdent(_$$0.h0); case "Apply": { const _sc$$0 = _$$0.h0; switch (_sc$$0.tag) { case "JLam": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_$$0.h0))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text(")"))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_nest(2)(Lib_Prettier_commaSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Compile_expToDoc)(_$$0.h1))))(Lib_Prettier_text(")")))))); default: return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Compile_expToDoc(_$$0.h0))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_nest(2)(Lib_Prettier_commaSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Compile_expToDoc)(_$$0.h1))))(Lib_Prettier_text(")")))); } break; } case "LitInt": return Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$0.h0)); case "LitString": return Lib_Prettier_text(Lib_Common_quoteString(_$$0.h0)); case "LitObject": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("{"))(Lib_Prettier_folddoc(( a ) => (( e ) => (Lib_Prettier__$3C$2B$2F$3E_(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(a)(Lib_Prettier_text(", ")), e))), Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_Compile_expToDoc_entry(_$$0, _$$0.h0, null, eta)))(_$$0.h0))))(Lib_Prettier_text("}")); case "LitArray": return Prelude_fatalError(null, "TODO - LitArray to doc"); } }; const Lib_Compile_caseBody = ( e$$0, _$$1 ) => { switch (_$$1.tag) { case "JCase": return Lib_Prettier_nest(2)(Lib_Prettier__$3C$2F$3E_(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_line)(Lib_Compile_stmtToDoc(null, _$$1)), Lib_Prettier_text("break;"))); case "JReturn": return Lib_Prettier_nest(2)(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_line)(Lib_Compile_stmtToDoc(null, _$$1))); default: return Lib_Prettier__$3C$2F$3E_(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_line)(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("{"))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2F$3E_(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_line)(Lib_Compile_stmtToDoc(null, _$$1)), Lib_Prettier_text("break;"))))), Lib_Prettier_text("}")); } }; const Lib_Compile_altToDoc = ( _$$0 ) => { switch (_$$0.tag) { case "JLitAlt": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("case"))(Lib_Compile_expToDoc(_$$0.h1)))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text(":"))(Lib_Compile_caseBody(null, _$$0.h2))); case "JDefAlt": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("default"))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text(":"))(Lib_Compile_caseBody(null, _$$0.h1))); case "JConAlt": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("case"))(Lib_Prettier_text(Lib_Common_quoteString(_$$0.h1))))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text(":"))(Lib_Compile_caseBody(null, _$$0.h2))); } }; const Lib_Prettier_stack = ( eta ) => (Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier__$3C$2F$3E_(eta, eta1))), eta)); @@ -273,6 +273,7 @@ const Lib_Compile_freshNames_go = ( _, _1, _2, _$$3, _$$4, _$$5 ) => (bouncer(Li const Lib_Compile_freshNames = ( _$$0, _$$1 ) => (Lib_Compile_freshNames_go(_$$0, _$$1, null, _$$0, _$$1, Prelude_Lin(null))); const Lib_Compile_termToJS_etaExpand = ( _, _1, _2, _3, _4, _5, _6, _7, _$$8, _$$9, _$$10, _$$11 ) => { switch (_$$9) { case 0: return Lib_Compile_Apply(_$$11, Prelude__$3C$3E$3E_(null, _$$10, Prelude_Nil(null))); default: { const x = (_$$9) - (1); const nm$27 = Lib_Compile_freshName("eta", _$$8); const env$27 = Lib_Compile_push(_$$8, Lib_Compile_Var(nm$27)); return Lib_Compile_JLam(Prelude__$3A$3A_(null, nm$27, Prelude_Nil(null)), Lib_Compile_JReturn(Lib_Compile_termToJS_etaExpand(_, _1, _2, _3, _4, _5, _6, _7, Lib_Compile_push(_$$8, Lib_Compile_Var(nm$27)), x, Prelude__$3A$3C_(null, _$$10, Lib_Compile_Var(nm$27)), _$$11))); break; } } }; const Lib_Compile_termToJS_etaExpand_argsToJS = ( _, _1, _2, _3, _4, _5, _6, _7, _8, e$$9, _$$10, _$$11, _$$12, _$$13 ) => { switch (_$$11.tag) { case "_::_": return Lib_Compile_termToJS(null, _1, _$$11.h1, ( x$27 ) => (Lib_Compile_termToJS_etaExpand_argsToJS(_, _1, _2, _3, _4, _5, _6, _7, _8, null, _$$10, _$$11.h2, Prelude__$3A$3C_(null, _$$12, x$27), _$$13))); case "Nil": return _$$13(Lib_Compile_termToJS_etaExpand(_, _1, _2, _3, _4, _5, _6, _7, _1, Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_6), _$$12, _$$10)); } }; +const Lib_CompileExp_CRef = ( h0 ) => ({ tag: "CRef", h0: h0 }); const Lib_Compile_Dot = ( h0, h1 ) => ({ tag: "Dot", h0: h0, h1: h1 }); const Lib_Compile_REC_mkEnv = ( arg ) => { const _sc$$0 = arg.h3; switch (_sc$$0.tag) { case "_::_": return { tag: "Lib.Compile.mkEnv", h0: arg.h0, h1: Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(arg.h1), h2: Lib_Compile_push(arg.h2, Lib_Compile_Dot(Lib_Compile_Var(arg.h0), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("h")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(arg.h1)))(""))), h3: _sc$$0.h2 }; case "Nil": return { tag: "return", h0: arg.h2 }; } }; const Lib_Compile_mkEnv = ( _$$0, _$$1, _$$2, _$$3 ) => (bouncer(Lib_Compile_REC_mkEnv, { tag: "Lib.Compile.mkEnv", h0: _$$0, h1: _$$1, h2: _$$2, h3: _$$3 })); @@ -293,14 +294,14 @@ const Lib_Compile_JUndefined = { tag: "JUndefined" }; const Lib_Compile_LitObject = ( h0 ) => ({ tag: "LitObject", h0: h0 }); const Lib_Compile_Raw = ( h0 ) => ({ tag: "Raw", h0: h0 }); const Lib_Compile_JPrimOp = ( h0, h1, h2 ) => ({ tag: "JPrimOp", h0: h0, h1: h1, h2: h2 }); -const Lib_Compile_REC_termToJS = ( arg ) => { switch (arg.tag) { case "Lib.Compile.termToJS": { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "CPrimOp": return { tag: "Lib.Compile.termToJS", h0: null, h1: arg.h1, h2: _sc$$0.h1, h3: ( t ) => (Lib_Compile_termToJS(null, arg.h1, _sc$$0.h2, ( u ) => (arg.h3(Lib_Compile_JPrimOp(_sc$$0.h0, t, u))))) }; case "CRaw": return { tag: "return", h0: arg.h3(Lib_Compile_Raw(_sc$$0.h0)) }; case "CConstr": return { tag: "Lib.Compile.termToJS.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: _sc$$0.h0, h5: _sc$$0.h1, h6: null, h7: null, h8: _sc$$0.h1, h9: 0, h10: ( args ) => (arg.h3(Lib_Compile_LitObject(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, "tag", Lib_Compile_LitString(_sc$$0.h0)), args)))) }; case "CErased": return { tag: "return", h0: arg.h3(Lib_Compile_JUndefined) }; case "CLetRec": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "CErased": return { tag: "Lib.Compile.termToJS", h0: null, h1: Lib_Compile_push(arg.h1, Lib_Compile_JUndefined), h2: _sc$$0.h2, h3: arg.h3 }; default: { const nm$27 = Lib_Compile_freshName(_sc$$0.h0, arg.h1); const env$27 = Lib_Compile_push(arg.h1, Lib_Compile_Var(nm$27)); const sc$$9 = Lib_Compile_termToJS(null, env$27, _sc$$0.h1, ( eta ) => (Lib_Compile_JAssign(nm$27, eta))); switch (sc$$9.tag) { case "JAssign": return { tag: "return", h0: Lib_Compile_JSnoc(null, Lib_Compile_JConst(nm$27, sc$$9.h1), Lib_Compile_termToJS(null, env$27, _sc$$0.h2, arg.h3)) }; default: return { tag: "return", h0: Lib_Compile_JSnoc(null, Lib_Compile_JLet(nm$27, sc$$9), Lib_Compile_termToJS(null, env$27, _sc$$0.h2, arg.h3)) }; } break; } } break; } case "CLet": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "CBnd": { const sc$$8 = Prelude_getAt(null, Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_sc$$1.h0), Lib_Compile__jsenv(arg.h1)); switch (sc$$8.tag) { case "Nothing": return { tag: "return", h0: Prelude_fatalError(null, "bad bounds") }; case "Just": return { tag: "Lib.Compile.termToJS", h0: null, h1: Lib_Compile_push(arg.h1, sc$$8.h1), h2: _sc$$0.h2, h3: arg.h3 }; } break; } default: { const nm$27 = Lib_Compile_freshName(_sc$$0.h0, arg.h1); const env$27 = Lib_Compile_push(arg.h1, Lib_Compile_Var(nm$27)); const sc$$9 = Lib_Compile_termToJS(null, arg.h1, _sc$$0.h1, ( eta ) => (Lib_Compile_JAssign(nm$27, eta))); switch (sc$$9.tag) { case "JAssign": return { tag: "return", h0: Lib_Compile_JSnoc(null, Lib_Compile_JConst(nm$27, sc$$9.h1), Lib_Compile_termToJS(null, env$27, _sc$$0.h2, arg.h3)) }; default: return { tag: "return", h0: Lib_Compile_JSnoc(null, Lib_Compile_JLet(nm$27, sc$$9), Lib_Compile_termToJS(null, env$27, _sc$$0.h2, arg.h3)) }; } break; } } break; } case "CLit": return { tag: "return", h0: arg.h3(Lib_Compile_litToJS(_sc$$0.h0)) }; case "CMeta": return { tag: "return", h0: arg.h3(Lib_Compile_LitString(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("META ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_sc$$0.h0)))(""))) }; case "CRef": return { tag: "return", h0: arg.h3(Lib_Compile_Var(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h0))) }; case "CCase": return { tag: "Lib.Compile.termToJS", h0: null, h1: arg.h1, h2: _sc$$0.h0, h3: ( $$case ) => { switch ($$case.tag) { case "Var": return Lib_Compile_termToJS_termToJSAlt_maybeCaseStmt(arg.h0, arg.h1, arg.h2, arg.h3, _sc$$0.h0, _sc$$0.h1, null, null, arg.h1, $$case.h0, _sc$$0.h1); default: { const nm = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("_sc$")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Lib_Compile__depth(arg.h1))))(""); const env$27 = Lib_Compile_MkEnv(Lib_Compile__jsenv(arg.h1), Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(Lib_Compile__depth(arg.h1))); return Lib_Compile_JSnoc(null, Lib_Compile_JConst(nm, $$case), Lib_Compile_termToJS_termToJSAlt_maybeCaseStmt(arg.h0, arg.h1, arg.h2, arg.h3, _sc$$0.h0, _sc$$0.h1, null, null, env$27, nm, _sc$$0.h1)); break; } } } }; case "CApp": return { tag: "Lib.Compile.termToJS", h0: null, h1: arg.h1, h2: _sc$$0.h0, h3: ( t$27 ) => (Lib_Compile_termToJS_etaExpand_argsToJS(arg.h0, arg.h1, arg.h2, arg.h3, _sc$$0.h0, _sc$$0.h1, _sc$$0.h2, null, null, null, t$27, _sc$$0.h1, Prelude_Lin(null), arg.h3)) }; case "CFun": { const sc$$6 = Lib_Compile_freshNames(_sc$$0.h0, arg.h1); return { tag: "return", h0: arg.h3(Lib_Compile_JLam(sc$$6.h2, Lib_Compile_termToJS(null, sc$$6.h3, _sc$$0.h1, Lib_Compile_JReturn))) }; break; } case "CLam": { const sc$$6 = Lib_Compile_freshName$27(_sc$$0.h0, arg.h1); return { tag: "return", h0: arg.h3(Lib_Compile_JLam(Prelude__$3A$3A_(null, sc$$6.h2, Prelude_Nil(null)), Lib_Compile_termToJS(null, sc$$6.h3, _sc$$0.h1, Lib_Compile_JReturn))) }; break; } case "CBnd": { const sc$$5 = Prelude_getAt(null, Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_sc$$0.h0), Lib_Compile__jsenv(arg.h1)); switch (sc$$5.tag) { case "Nothing": return { tag: "return", h0: Prelude_fatalError(null, "Bad bounds") }; case "Just": return { tag: "return", h0: arg.h3(sc$$5.h1) }; } break; } } break; } case "Lib.Compile.termToJS.go": { const _sc$$0 = arg.h8; switch (_sc$$0.tag) { case "_::_": return { tag: "Lib.Compile.termToJS", h0: null, h1: arg.h1, h2: _sc$$0.h1, h3: ( t$27 ) => (Lib_Compile_termToJS_go(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, arg.h5, arg.h6, null, _sc$$0.h2, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(arg.h9)(1), ( args ) => (arg.h10(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("h")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(arg.h9)))(""), t$27), args))))) }; case "Nil": return { tag: "return", h0: arg.h10(Prelude_Nil(null)) }; } break; } } }; +const Lib_Compile_REC_termToJS = ( arg ) => { switch (arg.tag) { case "Lib.Compile.termToJS": { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "CPrimOp": return { tag: "Lib.Compile.termToJS", h0: null, h1: arg.h1, h2: _sc$$0.h1, h3: ( t ) => (Lib_Compile_termToJS(null, arg.h1, _sc$$0.h2, ( u ) => (arg.h3(Lib_Compile_JPrimOp(_sc$$0.h0, t, u))))) }; case "CRaw": return { tag: "return", h0: arg.h3(Lib_Compile_Raw(_sc$$0.h0)) }; case "CConstr": return { tag: "Lib.Compile.termToJS.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: _sc$$0.h0, h5: _sc$$0.h1, h6: null, h7: null, h8: _sc$$0.h1, h9: 0, h10: ( args ) => (arg.h3(Lib_Compile_LitObject(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, "tag", Lib_Compile_LitString(_sc$$0.h0)), args)))) }; case "CErased": return { tag: "return", h0: arg.h3(Lib_Compile_JUndefined) }; case "CLetRec": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "CErased": return { tag: "Lib.Compile.termToJS", h0: null, h1: Lib_Compile_push(arg.h1, Lib_Compile_JUndefined), h2: _sc$$0.h2, h3: arg.h3 }; default: { const nm$27 = Lib_Compile_freshName(_sc$$0.h0, arg.h1); const env$27 = Lib_Compile_push(arg.h1, Lib_Compile_Var(nm$27)); const sc$$9 = Lib_Compile_termToJS(null, env$27, _sc$$0.h1, ( eta ) => (Lib_Compile_JAssign(nm$27, eta))); switch (sc$$9.tag) { case "JAssign": return { tag: "return", h0: Lib_Compile_JSnoc(null, Lib_Compile_JConst(nm$27, sc$$9.h1), Lib_Compile_termToJS(null, env$27, _sc$$0.h2, arg.h3)) }; default: return { tag: "return", h0: Lib_Compile_JSnoc(null, Lib_Compile_JLet(nm$27, sc$$9), Lib_Compile_termToJS(null, env$27, _sc$$0.h2, arg.h3)) }; } break; } } break; } case "CLet": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "CBnd": { const sc$$8 = Prelude_getAt(null, Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_sc$$1.h0), Lib_Compile__jsenv(arg.h1)); switch (sc$$8.tag) { case "Nothing": return { tag: "return", h0: Prelude_fatalError(null, "bad bounds") }; case "Just": return { tag: "Lib.Compile.termToJS", h0: null, h1: Lib_Compile_push(arg.h1, sc$$8.h1), h2: _sc$$0.h2, h3: arg.h3 }; } break; } default: { const nm$27 = Lib_Compile_freshName(_sc$$0.h0, arg.h1); const env$27 = Lib_Compile_push(arg.h1, Lib_Compile_Var(nm$27)); const sc$$9 = Lib_Compile_termToJS(null, arg.h1, _sc$$0.h1, ( eta ) => (Lib_Compile_JAssign(nm$27, eta))); switch (sc$$9.tag) { case "JAssign": return { tag: "return", h0: Lib_Compile_JSnoc(null, Lib_Compile_JConst(nm$27, sc$$9.h1), Lib_Compile_termToJS(null, env$27, _sc$$0.h2, arg.h3)) }; default: return { tag: "return", h0: Lib_Compile_JSnoc(null, Lib_Compile_JLet(nm$27, sc$$9), Lib_Compile_termToJS(null, env$27, _sc$$0.h2, arg.h3)) }; } break; } } break; } case "CLit": return { tag: "return", h0: arg.h3(Lib_Compile_litToJS(_sc$$0.h0)) }; case "CMeta": return { tag: "return", h0: arg.h3(Lib_Compile_LitString(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("META ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_sc$$0.h0)))(""))) }; case "CRef": return { tag: "return", h0: arg.h3(Lib_Compile_Var(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h0))) }; case "CCase": return { tag: "Lib.Compile.termToJS", h0: null, h1: arg.h1, h2: _sc$$0.h0, h3: ( $$case ) => { switch ($$case.tag) { case "Var": return Lib_Compile_termToJS_termToJSAlt_maybeCaseStmt(arg.h0, arg.h1, arg.h2, arg.h3, _sc$$0.h0, _sc$$0.h1, null, null, arg.h1, $$case.h0, _sc$$0.h1); default: { const nm = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("_sc$")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Lib_Compile__depth(arg.h1))))(""); const env$27 = Lib_Compile_MkEnv(Lib_Compile__jsenv(arg.h1), Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(Lib_Compile__depth(arg.h1))); return Lib_Compile_JSnoc(null, Lib_Compile_JConst(nm, $$case), Lib_Compile_termToJS_termToJSAlt_maybeCaseStmt(arg.h0, arg.h1, arg.h2, arg.h3, _sc$$0.h0, _sc$$0.h1, null, null, env$27, nm, _sc$$0.h1)); break; } } } }; case "CApp": return { tag: "Lib.Compile.termToJS", h0: null, h1: arg.h1, h2: _sc$$0.h0, h3: ( t$27 ) => (Lib_Compile_termToJS(null, arg.h1, _sc$$0.h1, ( arg$27 ) => (arg.h3(Lib_Compile_Apply(t$27, Prelude__$3A$3A_(null, arg$27, Prelude_Nil(null))))))) }; case "CAppRef": return { tag: "Lib.Compile.termToJS", h0: null, h1: arg.h1, h2: Lib_CompileExp_CRef(_sc$$0.h0), h3: ( t$27 ) => (Lib_Compile_termToJS_etaExpand_argsToJS(arg.h0, arg.h1, arg.h2, arg.h3, _sc$$0.h0, _sc$$0.h1, _sc$$0.h2, null, null, null, t$27, _sc$$0.h1, Prelude_Lin(null), arg.h3)) }; case "CFun": { const sc$$6 = Lib_Compile_freshNames(_sc$$0.h0, arg.h1); return { tag: "return", h0: arg.h3(Lib_Compile_JLam(sc$$6.h2, Lib_Compile_termToJS(null, sc$$6.h3, _sc$$0.h1, Lib_Compile_JReturn))) }; break; } case "CLam": { const sc$$6 = Lib_Compile_freshName$27(_sc$$0.h0, arg.h1); return { tag: "return", h0: arg.h3(Lib_Compile_JLam(Prelude__$3A$3A_(null, sc$$6.h2, Prelude_Nil(null)), Lib_Compile_termToJS(null, sc$$6.h3, _sc$$0.h1, Lib_Compile_JReturn))) }; break; } case "CBnd": { const sc$$5 = Prelude_getAt(null, Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_sc$$0.h0), Lib_Compile__jsenv(arg.h1)); switch (sc$$5.tag) { case "Nothing": return { tag: "return", h0: Prelude_fatalError(null, "Bad bounds") }; case "Just": return { tag: "return", h0: arg.h3(sc$$5.h1) }; } break; } } break; } case "Lib.Compile.termToJS.go": { const _sc$$0 = arg.h8; switch (_sc$$0.tag) { case "_::_": return { tag: "Lib.Compile.termToJS", h0: null, h1: arg.h1, h2: _sc$$0.h1, h3: ( t$27 ) => (Lib_Compile_termToJS_go(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, arg.h5, arg.h6, null, _sc$$0.h2, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(arg.h9)(1), ( args ) => (arg.h10(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("h")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(arg.h9)))(""), t$27), args))))) }; case "Nil": return { tag: "return", h0: arg.h10(Prelude_Nil(null)) }; } break; } } }; const Lib_Compile_termToJS = ( e$$0, _$$1, _$$2, _$$3 ) => (bouncer(Lib_Compile_REC_termToJS, { tag: "Lib.Compile.termToJS", h0: e$$0, h1: _$$1, h2: _$$2, h3: _$$3 })); const Lib_Compile_maybeWrap = ( _$$0 ) => { switch (_$$0.tag) { case "JReturn": return _$$0.h0; default: return Lib_Compile_Apply(Lib_Compile_JLam(Prelude_Nil(null), _$$0), Prelude_Nil(null)); } }; const Lib_Compile_cexpToDoc = ( _$$0 ) => { const exp = Lib_Compile_maybeWrap(Lib_Compile_termToJS(null, Lib_Compile_emptyJSEnv, _$$0.h3, Lib_Compile_JReturn)); return Lib_Compile_stmtToDoc(null, Lib_Compile_JConst(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0.h2), exp)); }; const Prelude_REC_foldl = ( arg ) => { const _sc$$0 = arg.h4; switch (_sc$$0.tag) { case "_::_": return { tag: "Prelude.foldl", h0: null, h1: null, h2: arg.h2, h3: arg.h2(arg.h3)(_sc$$0.h1), h4: _sc$$0.h2 }; case "Nil": return { tag: "return", h0: arg.h3 }; } }; const Prelude_foldl = ( A$$0, B$$1, _$$2, _$$3, _$$4 ) => (bouncer(Prelude_REC_foldl, { tag: "Prelude.foldl", h0: A$$0, h1: B$$1, h2: _$$2, h3: _$$3, h4: _$$4 })); const Lib_Compile_sortedNames_getBody = ( _, _1, _2, _$$3 ) => { switch (_$$3.tag) { case "CLitAlt": return _$$3.h1; case "CDefAlt": return _$$3.h0; case "CConAlt": return _$$3.h3; } }; -const Lib_Compile_REC_sortedNames_getBody_getNames = ( arg ) => { const _sc$$0 = arg.h5; switch (_sc$$0.tag) { case "CPrimOp": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, _sc$$0.h1), h5: _sc$$0.h2 }; case "CRaw": return { tag: "return", h0: Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$0.h1)(arg.h4) }; case "CConstr": return { tag: "return", h0: Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, eta, eta1))), arg.h4, _sc$$0.h1) }; case "CErased": return { tag: "return", h0: arg.h4 }; case "CLetRec": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, _sc$$0.h1), h5: _sc$$0.h2 }; case "CLet": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, _sc$$0.h1), h5: _sc$$0.h2 }; case "CLit": return { tag: "return", h0: arg.h4 }; case "CMeta": return { tag: "return", h0: arg.h4 }; case "CRef": return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h0, arg.h4) }; case "CCase": return { tag: "return", h0: Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, eta, eta1))), arg.h4, Prelude__$3A$3A_(null, _sc$$0.h0, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_Compile_sortedNames_getBody(arg.h0, arg.h1, arg.h2, eta)))(_sc$$0.h1))) }; case "CApp": return { tag: "return", h0: Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, eta, eta1))), arg.h4, Prelude__$3A$3A_(null, _sc$$0.h0, _sc$$0.h1)) }; case "CFun": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: _sc$$0.h1 }; case "CLam": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: _sc$$0.h1 }; case "CBnd": return { tag: "return", h0: arg.h4 }; } }; +const Lib_Compile_REC_sortedNames_getBody_getNames = ( arg ) => { const _sc$$0 = arg.h5; switch (_sc$$0.tag) { case "CPrimOp": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, _sc$$0.h1), h5: _sc$$0.h2 }; case "CRaw": return { tag: "return", h0: Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$0.h1)(arg.h4) }; case "CConstr": return { tag: "return", h0: Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, eta, eta1))), arg.h4, _sc$$0.h1) }; case "CErased": return { tag: "return", h0: arg.h4 }; case "CLetRec": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, _sc$$0.h1), h5: _sc$$0.h2 }; case "CLet": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, _sc$$0.h1), h5: _sc$$0.h2 }; case "CLit": return { tag: "return", h0: arg.h4 }; case "CMeta": return { tag: "return", h0: arg.h4 }; case "CRef": return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h0, arg.h4) }; case "CCase": return { tag: "return", h0: Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, eta, eta1))), arg.h4, Prelude__$3A$3A_(null, _sc$$0.h0, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_Compile_sortedNames_getBody(arg.h0, arg.h1, arg.h2, eta)))(_sc$$0.h1))) }; case "CApp": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, _sc$$0.h0), h5: _sc$$0.h1 }; case "CAppRef": return { tag: "return", h0: Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h2, arg.h3, eta, eta1))), Prelude__$3A$3A_(null, _sc$$0.h0, arg.h4), _sc$$0.h1) }; case "CFun": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: _sc$$0.h1 }; case "CLam": return { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: _sc$$0.h1 }; case "CBnd": return { tag: "return", h0: arg.h4 }; } }; const Lib_Compile_sortedNames_getBody_getNames = ( _, _1, _2, _3, _$$4, _$$5 ) => (bouncer(Lib_Compile_REC_sortedNames_getBody_getNames, { tag: "Lib.Compile.sortedNames.getBody.getNames", h0: _, h1: _1, h2: _2, h3: _3, h4: _$$4, h5: _$$5 })); const Prelude_snd = ( a$$0, b$$1, _$$2 ) => (_$$2.h3); const Data_SortedMap_lookupMap$27 = ( k$$0, v$$1, _$$2, _$$3, _$$4 ) => { switch (_$$4.tag) { case "MapOf": return Prelude__$3C$$$3E_(null, Prelude_Prelude_Functor$20Prelude_Maybe, null, null, ( eta ) => (Prelude_snd(null, null, eta)), Data_SortedMap_lookupT23(null, null, null, _$$2, _$$3, _$$4.h3)); case "EmptyMap": return Prelude_Nothing(null); } }; @@ -316,10 +317,9 @@ const Data_SortedMap_insertT23 = ( h$$0, k$$1, v$$2, _$$3, _$$4, _$$5, _$$6 ) => const Data_SortedMap_updateMap = ( k$$0, v$$1, _$$2, _$$3, _$$4, _$$5 ) => { switch (_$$5.tag) { case "MapOf": { const sc$$10 = Data_SortedMap_insertT23(null, null, null, _$$2, _$$3, _$$4, _$$5.h3); switch (sc$$10.tag) { case "Right": { const _sc$$0 = sc$$10.h2; const _sc$$1 = _sc$$0.h3; return Data_SortedMap_MapOf(null, null, (1) + (_$$5.h2), Data_SortedMap_Node2(null, null, null, _sc$$0.h2, _sc$$1.h2, _sc$$1.h3)); break; } case "Left": return Data_SortedMap_MapOf(null, null, _$$5.h2, sc$$10.h2); } break; } case "EmptyMap": return Data_SortedMap_MapOf(null, null, 0, Data_SortedMap_Leaf(null, null, _$$3, _$$4)); } }; const Lib_TCO_tailCallOpt_doUpdate = ( _, _1, _$$2, _$$3 ) => (Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$3.h2, _$$3.h3, _$$2)); const Lib_CompileExp_CFun = ( h0, h1 ) => ({ tag: "CFun", h0: h0, h1: h1 }); -const Lib_CompileExp_CRef = ( h0 ) => ({ tag: "CRef", h0: h0 }); const Lib_Common_QN = ( h0, h1 ) => ({ tag: "QN", h0: h0, h1: h1 }); const Lib_TCO_bouncer = Lib_Common_QN(Prelude_Nil(null), "bouncer"); -const Lib_CompileExp_CApp = ( h0, h1, h2 ) => ({ tag: "CApp", h0: h0, h1: h1, h2: h2 }); +const Lib_CompileExp_CAppRef = ( h0, h1, h2 ) => ({ tag: "CAppRef", h0: h0, h1: h1, h2: h2 }); const Lib_Common_range = ( _$$0, _$$1 ) => { const sc$$2 = Prelude__$3C_(null, Prelude_Prelude_Ord$20Prim_Int, _$$0, _$$1); switch (sc$$2) { case "False": return Prelude_Nil(null); case "True": return Prelude__$3A$3A_(null, _$$0, Lib_Common_range(Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(_$$0)(1), _$$1)); } }; const Prelude_subInt = (x,y) => x - y; const Prelude_Prelude_Sub$20Prim_Int$2C_$2D_ = ( _$$0, _$$1 ) => (Prelude_subInt(_$$0, _$$1)); @@ -331,7 +331,7 @@ const Lib_CompileExp_CConstr = ( h0, h1 ) => ({ tag: "CConstr", h0: h0, h1: h1 const Prelude_REC_length$27_go = ( arg ) => { const _sc$$0 = arg.h4; switch (_sc$$0.tag) { case "_::_": return { tag: "Prelude.length'.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: null, h4: _sc$$0.h2, h5: Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(arg.h5)(1) }; case "Nil": return { tag: "return", h0: arg.h5 }; } }; const Prelude_length$27_go = ( _, _1, _2, a$$3, _$$4, _$$5 ) => (bouncer(Prelude_REC_length$27_go, { tag: "Prelude.length'.go", h0: _, h1: _1, h2: _2, h3: a$$3, h4: _$$4, h5: _$$5 })); const Prelude_length$27 = ( a$$0, _$$1 ) => (Prelude_length$27_go(a$$0, _$$1, null, null, _$$1, 0)); -const Lib_TCO_doOptimize_mkWrap = ( _, _1, _$$2, _$$3 ) => { const _sc$$0 = _$$3.h3; switch (_sc$$0.tag) { case "CFun": { const arglen = Prelude_length$27(null, _sc$$0.h0); const arg = Lib_CompileExp_CConstr(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$3.h2), Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( k ) => (Lib_CompileExp_CBnd(Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(arglen)(k))(1))))(Lib_Common_range(0, arglen))); const body = Lib_CompileExp_CApp(Lib_CompileExp_CRef(Lib_TCO_bouncer), Prelude__$3A$3A_(null, Lib_CompileExp_CRef(_$$2), Prelude__$3A$3A_(null, arg, Prelude_Nil(null))), 0); return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, _$$3.h2, Lib_CompileExp_CFun(_sc$$0.h0, body))); break; } default: return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("error in mkWrap: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$3.h2)))(" not a CFun")); } }; +const Lib_TCO_doOptimize_mkWrap = ( _, _1, _$$2, _$$3 ) => { const _sc$$0 = _$$3.h3; switch (_sc$$0.tag) { case "CFun": { const arglen = Prelude_length$27(null, _sc$$0.h0); const arg = Lib_CompileExp_CConstr(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$3.h2), Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( k ) => (Lib_CompileExp_CBnd(Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(arglen)(k))(1))))(Lib_Common_range(0, arglen))); const body = Lib_CompileExp_CAppRef(Lib_TCO_bouncer, Prelude__$3A$3A_(null, Lib_CompileExp_CRef(_$$2), Prelude__$3A$3A_(null, arg, Prelude_Nil(null))), 0); return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, _$$3.h2, Lib_CompileExp_CFun(_sc$$0.h0, body))); break; } default: return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("error in mkWrap: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$3.h2)))(" not a CFun")); } }; const Prelude_traverse = ( t$$0, _$$1 ) => (( f ) => (( a ) => (( b ) => (( _ ) => (_$$1.h1(null)(null)(null)(_)))))); const Prelude__$3C$2A$3E_ = ( f$$0, _$$1 ) => (( a ) => (( b ) => (_$$1.h2(null)(null)))); const Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse = ( f$$0, a$$1, b$$2, _$$3, _$$4, _$$5 ) => { switch (_$$5.tag) { case "_::_": return Prelude__$3C$2A$3E_(null, _$$3)(null)(null)(Prelude__$3C$2A$3E_(null, _$$3)(null)(null)(Prelude_return(null, _$$3)(null)(( eta ) => (( eta1 ) => (Prelude__$3A$3A_(null, eta, eta1)))))(_$$4(_$$5.h1)))(Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(_$$3)(_$$4)(_$$5.h2)); case "Nil": return Prelude_return(null, _$$3)(null)(Prelude_Nil(null)); } }; @@ -345,7 +345,7 @@ const Lib_CompileExp_CLitAlt = ( h0, h1 ) => ({ tag: "CLitAlt", h0: h0, h1: h1 const Lib_TCO_rewriteTailCalls_rewriteAlt = ( _, _1, _2, _$$3 ) => { switch (_$$3.tag) { case "CLitAlt": return Lib_CompileExp_CLitAlt(_$$3.h0, Lib_TCO_rewriteTailCalls(_, _$$3.h1)); case "CDefAlt": return Lib_CompileExp_CDefAlt(Lib_TCO_rewriteTailCalls(_, _$$3.h0)); case "CConAlt": return Lib_CompileExp_CConAlt(_$$3.h0, _$$3.h1, _$$3.h2, Lib_TCO_rewriteTailCalls(_, _$$3.h3)); } }; const Lib_CompileExp_CLet = ( h0, h1, h2 ) => ({ tag: "CLet", h0: h0, h1: h1, h2: h2 }); const Lib_CompileExp_CLetRec = ( h0, h1, h2 ) => ({ tag: "CLetRec", h0: h0, h1: h1, h2: h2 }); -const Lib_TCO_rewriteTailCalls = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "CLetRec": return Lib_CompileExp_CLetRec(_$$1.h0, _$$1.h1, Lib_TCO_rewriteTailCalls(_$$0, _$$1.h2)); case "CLet": return Lib_CompileExp_CLet(_$$1.h0, _$$1.h1, Lib_TCO_rewriteTailCalls(_$$0, _$$1.h2)); case "CCase": return Lib_CompileExp_CCase(_$$1.h0, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_TCO_rewriteTailCalls_rewriteAlt(_$$0, _$$1, null, eta)))(_$$1.h1)); case "CApp": { const _sc$$0 = _$$1.h0; switch (_sc$$0.tag) { case "CRef": { const _sc$$1 = _$$1.h2; switch (_sc$$1) { case 0: { const sc$$8 = Prelude_elem(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$0.h0, _$$0); switch (sc$$8) { case "False": return Lib_CompileExp_CConstr("return", Prelude__$3A$3A_(null, _$$1, Prelude_Nil(null))); case "True": return Lib_CompileExp_CConstr(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h0), _$$1.h1); } break; } default: return Lib_CompileExp_CConstr("return", Prelude__$3A$3A_(null, _$$1, Prelude_Nil(null))); } break; } default: return Lib_CompileExp_CConstr("return", Prelude__$3A$3A_(null, _$$1, Prelude_Nil(null))); } break; } default: return Lib_CompileExp_CConstr("return", Prelude__$3A$3A_(null, _$$1, Prelude_Nil(null))); } }; +const Lib_TCO_rewriteTailCalls = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "CLetRec": return Lib_CompileExp_CLetRec(_$$1.h0, _$$1.h1, Lib_TCO_rewriteTailCalls(_$$0, _$$1.h2)); case "CLet": return Lib_CompileExp_CLet(_$$1.h0, _$$1.h1, Lib_TCO_rewriteTailCalls(_$$0, _$$1.h2)); case "CCase": return Lib_CompileExp_CCase(_$$1.h0, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_TCO_rewriteTailCalls_rewriteAlt(_$$0, _$$1, null, eta)))(_$$1.h1)); case "CAppRef": { const _sc$$0 = _$$1.h2; switch (_sc$$0) { case 0: { const sc$$7 = Prelude_elem(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _$$1.h0, _$$0); switch (sc$$7) { case "False": return Lib_CompileExp_CConstr("return", Prelude__$3A$3A_(null, _$$1, Prelude_Nil(null))); case "True": return Lib_CompileExp_CConstr(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1.h0), _$$1.h1); } break; } default: return Lib_CompileExp_CConstr("return", Prelude__$3A$3A_(null, _$$1, Prelude_Nil(null))); } break; } default: return Lib_CompileExp_CConstr("return", Prelude__$3A$3A_(null, _$$1, Prelude_Nil(null))); } }; const Lib_TCO_doOptimize_mkWrap_mkRecName_mkAlt = ( _, _1, _2, _3, _$$4, _$$5 ) => { const _sc$$0 = _$$5.h3; return Lib_CompileExp_CConAlt(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$5.h2), "NormalCon", _sc$$0.h2, Lib_TCO_rewriteTailCalls(_$$4, _sc$$0.h3)); }; const Prelude_fst = ( a$$0, b$$1, _$$2 ) => (_$$2.h2); const Lib_TCO_doOptimize_mkWrap_mkRecName_mkAlt_splitFun = ( _, _1, _2, _3, _4, _$$5 ) => { const _sc$$0 = _$$5.h3; switch (_sc$$0.tag) { case "CFun": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, _$$5.h2, Prelude__$2C_(null, null, _sc$$0.h0, _sc$$0.h1))); default: return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TCO error: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$5.h2)))(" not a function")); } }; @@ -392,7 +392,7 @@ const Prelude_Prelude_Monad$20Prelude_List$2Cbind = ( a$$0, b$$1, _$$2, _$$3 ) = const Prelude_Prelude_Monad$20Prelude_List = Prelude_MkMonad(null, ( a ) => (( b ) => (( eta ) => (( eta1 ) => (Prelude_Prelude_Monad$20Prelude_List$2Cbind(null, null, eta, eta1))))), ( a ) => (( eta ) => (Prelude_Prelude_Monad$20Prelude_List$2Cpure(null, eta)))); const Prelude_id = ( a$$0, _$$1 ) => (_$$1); const Prelude_join = ( m$$0, a$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, _$$2, _$$3, ( eta ) => (Prelude_id(null, eta)))); -const Lib_TCO_REC_tailNames = ( arg ) => { const _sc$$0 = arg.h0; switch (_sc$$0.tag) { case "CPrimOp": return { tag: "return", h0: Prelude_Nil(null) }; case "CRaw": return { tag: "return", h0: Prelude_Nil(null) }; case "CConstr": return { tag: "return", h0: Prelude_Nil(null) }; case "CErased": return { tag: "return", h0: Prelude_Nil(null) }; case "CLetRec": return { tag: "Lib.TCO.tailNames", h0: _sc$$0.h2 }; case "CLet": return { tag: "Lib.TCO.tailNames", h0: _sc$$0.h2 }; case "CLit": return { tag: "return", h0: Prelude_Nil(null) }; case "CMeta": return { tag: "return", h0: Prelude_Nil(null) }; case "CRef": return { tag: "return", h0: Prelude_Nil(null) }; case "CCase": return { tag: "return", h0: Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_TCO_tailNames_altTailNames(arg.h0, _sc$$0.h0, _sc$$0.h1, null, eta)))(_sc$$0.h1)) }; case "CApp": { const _sc$$1 = _sc$$0.h0; switch (_sc$$1.tag) { case "CRef": { const _sc$$2 = _sc$$0.h2; switch (_sc$$2) { case 0: return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$1.h0, Prelude_Nil(null)) }; default: return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$1.h0, Prelude_Nil(null)) }; } break; } default: return { tag: "return", h0: Prelude_Nil(null) }; } break; } case "CFun": return { tag: "Lib.TCO.tailNames", h0: _sc$$0.h1 }; case "CLam": return { tag: "return", h0: Prelude_Nil(null) }; case "CBnd": return { tag: "return", h0: Prelude_Nil(null) }; } }; +const Lib_TCO_REC_tailNames = ( arg ) => { const _sc$$0 = arg.h0; switch (_sc$$0.tag) { case "CPrimOp": return { tag: "return", h0: Prelude_Nil(null) }; case "CRaw": return { tag: "return", h0: Prelude_Nil(null) }; case "CConstr": return { tag: "return", h0: Prelude_Nil(null) }; case "CErased": return { tag: "return", h0: Prelude_Nil(null) }; case "CLetRec": return { tag: "Lib.TCO.tailNames", h0: _sc$$0.h2 }; case "CLet": return { tag: "Lib.TCO.tailNames", h0: _sc$$0.h2 }; case "CLit": return { tag: "return", h0: Prelude_Nil(null) }; case "CMeta": return { tag: "return", h0: Prelude_Nil(null) }; case "CRef": return { tag: "return", h0: Prelude_Nil(null) }; case "CCase": return { tag: "return", h0: Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_TCO_tailNames_altTailNames(arg.h0, _sc$$0.h0, _sc$$0.h1, null, eta)))(_sc$$0.h1)) }; case "CApp": return { tag: "return", h0: Prelude_Nil(null) }; case "CAppRef": return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h0, Prelude_Nil(null)) }; case "CFun": return { tag: "Lib.TCO.tailNames", h0: _sc$$0.h1 }; case "CLam": return { tag: "return", h0: Prelude_Nil(null) }; case "CBnd": return { tag: "return", h0: Prelude_Nil(null) }; } }; const Lib_TCO_tailNames = ( _$$0 ) => (bouncer(Lib_TCO_REC_tailNames, { tag: "Lib.TCO.tailNames", h0: _$$0 })); const Prelude_Prelude_Bifunctor$20Prelude__$D7_$2Cbimap = ( a$$0, b$$1, c$$2, d$$3, _$$4, _$$5, _$$6 ) => (Prelude__$2C_(null, null, _$$4(_$$6.h2), _$$5(_$$6.h3))); const Prelude_MkBifunctor = ( h0, h1 ) => ({ tag: "MkBifunctor", h0: h0, h1: h1 }); @@ -406,9 +406,10 @@ const Lib_CompileExp_CLit = ( h0 ) => ({ tag: "CLit", h0: h0 }); const Lib_CompileExp_compileDCon = ( _$$0, _$$1, _$$2 ) => { switch (_$$2) { case 0: switch (_$$1) { case "EnumCon": return Lib_CompileExp_CLit(Lib_Types_LString(_$$0.h1)); default: return Lib_CompileExp_CConstr(_$$0.h1, Prelude_Nil(null)); } break; default: { const args = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( k ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("h")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(k)))("")))(Lib_Common_range(0, _$$2)); return Lib_CompileExp_CFun(args, Lib_CompileExp_CConstr(_$$0.h1, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( k ) => (Lib_CompileExp_CBnd(Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(Prelude__$2D_(null, Prelude_Prelude_Sub$20Prim_Int)(_$$2)(k))(1))))(Lib_Common_range(0, _$$2)))); break; } } }; const Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int$2Ccast = Prelude_natToInt; const Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int = Prelude_MkCast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int$2Ccast); -const Lib_CompileExp_REC_apply_go = ( arg ) => { const _sc$$0 = arg.h5; switch (_sc$$0.tag) { case "CApp": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "Nil": { const _sc$$2 = _sc$$0.h2; switch (_sc$$2) { case 0: return { tag: "Lib.CompileExp.apply.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: _sc$$0.h0, h6: arg.h6 }; default: { const _sc$$3 = arg.h6; switch (_sc$$3.tag) { case "_::_": return { tag: "Lib.CompileExp.apply.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: Lib_CompileExp_CApp(arg.h5, Prelude__$3A$3A_(null, _sc$$3.h1, Prelude_Nil(null)), 0), h6: _sc$$3.h2 }; case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(arg.h5) }; } break; } } break; } default: { const _sc$$2 = arg.h6; switch (_sc$$2.tag) { case "_::_": return { tag: "Lib.CompileExp.apply.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: Lib_CompileExp_CApp(arg.h5, Prelude__$3A$3A_(null, _sc$$2.h1, Prelude_Nil(null)), 0), h6: _sc$$2.h2 }; case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(arg.h5) }; } break; } } break; } default: { const _sc$$1 = arg.h6; switch (_sc$$1.tag) { case "_::_": return { tag: "Lib.CompileExp.apply.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: Lib_CompileExp_CApp(arg.h5, Prelude__$3A$3A_(null, _sc$$1.h1, Prelude_Nil(null)), 0), h6: _sc$$1.h2 }; case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(arg.h5) }; } break; } } }; +const Lib_CompileExp_CApp = ( h0, h1 ) => ({ tag: "CApp", h0: h0, h1: h1 }); +const Lib_CompileExp_REC_apply_go = ( arg ) => { const _sc$$0 = arg.h6; switch (_sc$$0.tag) { case "_::_": return { tag: "Lib.CompileExp.apply.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: Lib_CompileExp_CApp(arg.h5, _sc$$0.h1), h6: _sc$$0.h2 }; case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(arg.h5) }; } }; const Lib_CompileExp_apply_go = ( _, _1, _2, _3, _4, _$$5, _$$6 ) => (bouncer(Lib_CompileExp_REC_apply_go, { tag: "Lib.CompileExp.apply.go", h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: _$$5, h6: _$$6 })); -const Lib_CompileExp_REC_apply = ( arg ) => { const _sc$$0 = arg.h3; switch (_sc$$0) { case 0: return { tag: "return", h0: Lib_CompileExp_apply_go(arg.h0, arg.h1, arg.h2, arg.h3, null, Lib_CompileExp_CApp(arg.h0, Prelude__$3C$3E$3E_(null, arg.h2, Prelude_Nil(null)), 0), arg.h1) }; default: { const x = (arg.h3) - (1); const _sc$$1 = arg.h1; switch (_sc$$1.tag) { case "_::_": return { tag: "Lib.CompileExp.apply", h0: arg.h0, h1: _sc$$1.h2, h2: Prelude__$3A$3C_(null, arg.h2, _sc$$1.h1), h3: x }; case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CApp(arg.h0, Prelude__$3C$3E$3E_(null, arg.h2, Prelude_Nil(null)), Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(x)))) }; } break; } } }; +const Lib_CompileExp_REC_apply = ( arg ) => { const _sc$$0 = arg.h3; switch (_sc$$0) { case 0: { const _sc$$1 = arg.h2; switch (_sc$$1.tag) { case "Lin": return { tag: "return", h0: Lib_CompileExp_apply_go(arg.h0, arg.h1, arg.h2, arg.h3, null, Lib_CompileExp_CRef(arg.h0), arg.h1) }; default: return { tag: "return", h0: Lib_CompileExp_apply_go(arg.h0, arg.h1, arg.h2, arg.h3, null, Lib_CompileExp_CAppRef(arg.h0, Prelude__$3C$3E$3E_(null, arg.h2, Prelude_Nil(null)), 0), arg.h1) }; } break; } default: { const x = (arg.h3) - (1); const _sc$$1 = arg.h1; switch (_sc$$1.tag) { case "_::_": return { tag: "Lib.CompileExp.apply", h0: arg.h0, h1: _sc$$1.h2, h2: Prelude__$3A$3C_(null, arg.h2, _sc$$1.h1), h3: x }; case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CAppRef(arg.h0, Prelude__$3C$3E$3E_(null, arg.h2, Prelude_Nil(null)), Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(x)))) }; } break; } } }; const Lib_CompileExp_apply = ( _$$0, _$$1, _$$2, _$$3 ) => (bouncer(Lib_CompileExp_REC_apply, { tag: "Lib.CompileExp.apply", h0: _$$0, h1: _$$1, h2: _$$2, h3: _$$3 })); const Lib_Types_LInt = ( h0 ) => ({ tag: "LInt", h0: h0 }); const Lib_CompileExp_CPrimOp = ( h0, h1, h2 ) => ({ tag: "CPrimOp", h0: h0, h1: h1, h2: h2 }); @@ -501,7 +502,7 @@ const Lib_CompileExp_any = ( a$$0, _$$1, _$$2 ) => (bouncer(Lib_CompileExp_REC_a const Lib_CompileExp_compileTerm_numAltP_enumAlt_isInfo_isDef_getBody_doNumCon_fancyCons = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _$$12, _$$13 ) => { const sc$$14 = Lib_CompileExp_any(null, ( eta ) => (Lib_CompileExp_compileTerm_numAltP(_, _1, _2, _3, _4, _5, eta)), _$$13); switch (sc$$14) { case "False": return Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_CompileExp_compileTerm_numAltP_enumAlt(_, _1, _2, _3, _4, _5, _6, eta)))(_$$13); case "True": return Lib_CompileExp_compileTerm_numAltP_enumAlt_isInfo_isDef_getBody_doNumCon(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _$$12, _$$13); } }; const Lib_CompileExp_lookupDef = ( _$$0, _$$1, _$$2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => { const sc$$4 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$2, defs); switch (sc$$4.tag) { case "Nothing": return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$2)))(" not in scope")); case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(sc$$4.h1); } })); const Prelude_for = ( t$$0, f$$1, _$$2, appf$$3, a$$4, b$$5, _$$6, _$$7 ) => (Prelude_traverse(null, _$$2)(null)(null)(null)(appf$$3)(_$$7)(_$$6)); -const Lib_CompileExp_compileTerm = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Erased": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CErased); case "Lit": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLit(_$$1.h1)); case "LetRec": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h3), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h4), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLetRec(_$$1.h1, t$27, u$27)))))); case "Let": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h2), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h3), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLet(_$$1.h1, t$27, u$27)))))); case "Case": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h1), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$1.h2, ( $$case ) => { switch ($$case.tag) { case "CaseLit": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CLitAlt($$case.h0, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h1)); case "CaseCons": { const _sc$$0 = $$case.h0; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_lookupDef(_$$0, Lib_Common_emptyFC, $$case.h0), ( def ) => { switch (def.tag) { case "DCon": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CConAlt(_sc$$0.h1, def.h0, $$case.h1, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h2)); default: return Lib_Types_error(null, _$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_sc$$0.h1)))(" is not constructor")); } }))); break; } case "CaseDefault": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, Lib_CompileExp_CDefAlt, Lib_CompileExp_compileTerm(_$$0, $$case.h0)); } }), ( alts$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CCase(t$27, Lib_CompileExp_compileTerm_numAltP_enumAlt_isInfo_isDef_getBody_doNumCon_fancyCons(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, null, null, null, null, null, null, t$27, alts$27))))))); case "Pi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h4), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h5), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CApp(Lib_CompileExp_CRef(Lib_Common_QN(Prelude_Nil(null), "PiType")), Prelude__$3A$3A_(null, t$27, Prelude__$3A$3A_(null, Lib_CompileExp_CLam(_$$1.h1, u$27), Prelude_Nil(null))), 0)))))); case "UU": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(Lib_Common_QN(Prelude_Nil(null), "U"))); case "App": { const sc$$6 = Lib_Util_funArgs(_$$1); const _sc$$0 = sc$$6.h2; switch (_sc$$0.tag) { case "Meta": return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(_$$1), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Compiling an unsolved meta ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Tm)(_$$1)))("")); case "Ref": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_CompileExp_compileTerm(_$$0, eta)))(sc$$6.h3), ( args$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_arityForName(_$$0, _sc$$0.h0, _sc$$0.h1), ( arity ) => { const sc$$16 = Prelude_the(Prelude_Maybe(null), Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _sc$$0.h1, defs)); switch (sc$$16.tag) { case "Just": { const _sc$$1 = sc$$16.h1; switch (_sc$$1.tag) { case "DCon": { const _sc$$2 = _sc$$1.h0; switch (_sc$$2) { case "SuccCon": return Lib_CompileExp_compileTerm_applySucc(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, args$27); default: return Lib_CompileExp_apply(Lib_CompileExp_CRef(_sc$$0.h1), args$27, Prelude_Lin(null), arity); } break; } default: return Lib_CompileExp_apply(Lib_CompileExp_CRef(_sc$$0.h1), args$27, Prelude_Lin(null), arity); } break; } default: return Lib_CompileExp_apply(Lib_CompileExp_CRef(_sc$$0.h1), args$27, Prelude_Lin(null), arity); } }))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("apply other ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$6.h2))))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, sc$$6.h2), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_CompileExp_compileTerm(_$$0, eta)))(sc$$6.h3), ( args$27 ) => (Lib_CompileExp_apply(t$27, args$27, Prelude_Lin(null), 0))))))); } break; } case "Lam": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CLam(_$$1.h1, eta)), Lib_CompileExp_compileTerm(_$$0, _$$1.h4)); case "Meta": return Lib_Types_error(null, _$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Compiling meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1.h1)))("")); case "Ref": { const _sc$$0 = _$$1.h1; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_arityForName(_$$0, _$$1.h0, _$$1.h1), ( arity ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => { switch (arity) { case 0: { const sc$$9 = Prelude_the(Prelude_Maybe(null), Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$1.h1, defs)); switch (sc$$9.tag) { case "Just": { const _sc$$1 = sc$$9.h1; switch (_sc$$1.tag) { case "DCon": { const _sc$$2 = _sc$$1.h0; switch (_sc$$2) { case "EnumCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLit(Lib_Types_LString(_sc$$0.h1))); case "ZeroCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLit(Lib_Types_LInt(0))); case "SuccCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLam("x", Lib_CompileExp_CPrimOp("+", Lib_CompileExp_CLit(Lib_Types_LInt(1)), Lib_CompileExp_CBnd(0)))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } default: { const x = (arity) - (1); switch (x) { case 0: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); default: return Lib_CompileExp_apply(Lib_CompileExp_CRef(_$$1.h1), Prelude_Nil(null), Prelude_Lin(null), arity); } break; } } }))); break; } case "Bnd": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CBnd(_$$1.h1)); } }; +const Lib_CompileExp_compileTerm = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Erased": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CErased); case "Lit": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLit(_$$1.h1)); case "LetRec": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h3), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h4), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLetRec(_$$1.h1, t$27, u$27)))))); case "Let": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h2), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h3), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLet(_$$1.h1, t$27, u$27)))))); case "Case": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h1), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$1.h2, ( $$case ) => { switch ($$case.tag) { case "CaseLit": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CLitAlt($$case.h0, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h1)); case "CaseCons": { const _sc$$0 = $$case.h0; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_lookupDef(_$$0, Lib_Common_emptyFC, $$case.h0), ( def ) => { switch (def.tag) { case "DCon": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CConAlt(_sc$$0.h1, def.h0, $$case.h1, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h2)); default: return Lib_Types_error(null, _$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_sc$$0.h1)))(" is not constructor")); } }))); break; } case "CaseDefault": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, Lib_CompileExp_CDefAlt, Lib_CompileExp_compileTerm(_$$0, $$case.h0)); } }), ( alts$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CCase(t$27, Lib_CompileExp_compileTerm_numAltP_enumAlt_isInfo_isDef_getBody_doNumCon_fancyCons(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, null, null, null, null, null, null, t$27, alts$27))))))); case "Pi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h4), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h5), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CAppRef(Lib_Common_QN(Prelude_Nil(null), "PiType"), Prelude__$3A$3A_(null, t$27, Prelude__$3A$3A_(null, Lib_CompileExp_CLam(_$$1.h1, u$27), Prelude_Nil(null))), 0)))))); case "UU": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(Lib_Common_QN(Prelude_Nil(null), "U"))); case "App": { const sc$$6 = Lib_Util_funArgs(_$$1); const _sc$$0 = sc$$6.h2; switch (_sc$$0.tag) { case "Meta": return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(_$$1), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Compiling an unsolved meta ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Tm)(_$$1)))("")); case "Ref": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_CompileExp_compileTerm(_$$0, eta)))(sc$$6.h3), ( args$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_arityForName(_$$0, _sc$$0.h0, _sc$$0.h1), ( arity ) => { const sc$$16 = Prelude_the(Prelude_Maybe(null), Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _sc$$0.h1, defs)); switch (sc$$16.tag) { case "Just": { const _sc$$1 = sc$$16.h1; switch (_sc$$1.tag) { case "DCon": { const _sc$$2 = _sc$$1.h0; switch (_sc$$2) { case "SuccCon": return Lib_CompileExp_compileTerm_applySucc(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, args$27); default: return Lib_CompileExp_apply(_sc$$0.h1, args$27, Prelude_Lin(null), arity); } break; } default: return Lib_CompileExp_apply(_sc$$0.h1, args$27, Prelude_Lin(null), arity); } break; } default: return Lib_CompileExp_apply(_sc$$0.h1, args$27, Prelude_Lin(null), arity); } }))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("apply other ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$6.h2))))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, sc$$6.h2), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_CompileExp_compileTerm(_$$0, eta)))(sc$$6.h3), ( args$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_CompileExp_CApp(eta, eta1))), t$27, args$27)))))))); } break; } case "Lam": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CLam(_$$1.h1, eta)), Lib_CompileExp_compileTerm(_$$0, _$$1.h4)); case "Meta": return Lib_Types_error(null, _$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Compiling meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1.h1)))("")); case "Ref": { const _sc$$0 = _$$1.h1; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_arityForName(_$$0, _$$1.h0, _$$1.h1), ( arity ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => { switch (arity) { case 0: { const sc$$9 = Prelude_the(Prelude_Maybe(null), Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$1.h1, defs)); switch (sc$$9.tag) { case "Just": { const _sc$$1 = sc$$9.h1; switch (_sc$$1.tag) { case "DCon": { const _sc$$2 = _sc$$1.h0; switch (_sc$$2) { case "EnumCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLit(Lib_Types_LString(_sc$$0.h1))); case "ZeroCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLit(Lib_Types_LInt(0))); case "SuccCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLam("x", Lib_CompileExp_CPrimOp("+", Lib_CompileExp_CLit(Lib_Types_LInt(1)), Lib_CompileExp_CBnd(0)))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } default: { const x = (arity) - (1); switch (x) { case 0: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); default: return Lib_CompileExp_apply(_$$1.h1, Prelude_Nil(null), Prelude_Lin(null), arity); } break; } } }))); break; } case "Bnd": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CBnd(_$$1.h1)); } }; const Lib_CompileExp_REC_compileFun_go = ( arg ) => { const _sc$$0 = arg.h3; switch (_sc$$0.tag) { case "Lam": return { tag: "Lib.CompileExp.compileFun.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: _sc$$0.h4, h4: Prelude__$3A$3C_(null, arg.h4, _sc$$0.h1) }; default: { const _sc$$1 = arg.h4; switch (_sc$$1.tag) { case "Lin": return { tag: "return", h0: Lib_CompileExp_compileTerm(arg.h0, arg.h3) }; default: return { tag: "return", h0: Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CFun(Prelude__$3C$3E$3E_(null, arg.h4, Prelude_Nil(null)), eta)), Lib_CompileExp_compileTerm(arg.h0, arg.h3)) }; } break; } } }; const Lib_CompileExp_compileFun_go = ( _, _1, _2, _$$3, _$$4 ) => (bouncer(Lib_CompileExp_REC_compileFun_go, { tag: "Lib.CompileExp.compileFun.go", h0: _, h1: _1, h2: _2, h3: _$$3, h4: _$$4 })); const Lib_CompileExp_compileFun = ( _$$0, _$$1 ) => (Lib_CompileExp_compileFun_go(_$$0, _$$1, null, _$$1, Prelude_Lin(null))); @@ -652,7 +653,7 @@ const Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29$2Cshow = ( a$$0, _ const Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29 = ( a, _ ) => (Prelude_MkShow(null, ( eta ) => (Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29$2Cshow(null, _, eta)))); const Lib_Eval_evalCase = ( _$$0, _$$1, _$$2, _$$3 ) => { switch (_$$3.tag) { case "_::_": { const _sc$$0 = _$$3.h1; switch (_sc$$0.tag) { case "CaseCons": switch (_$$2.tag) { case "VRef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$15 = Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_$$2.h1)(_sc$$0.h0); switch (sc$$15) { case "False": { const sc$$16 = Lib_TopContext_lookup(_$$2.h1, top); switch (sc$$16.tag) { case "Just": { const _sc$$1 = sc$$16.h1; const _sc$$2 = _sc$$1.h3; switch (_sc$$2.tag) { case "DCon": return Lib_Eval_evalCase(_$$0, _$$1, _$$2, _$$3.h2); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } break; } case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ECase ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$2.h1)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$2.h2)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_sc$$0.h1)))(" "))(Lib_Types_showTm(_sc$$0.h2)))(""))), ( _ ) => (Lib_Eval_evalCase_go(_$$0, _$$1, _$$2, _$$3, _$$3.h0, _$$3.h1, _$$3.h2, _sc$$0.h0, _sc$$0.h1, _sc$$0.h2, _$$2.h0, _$$2.h1, _$$2.h2, null, _$$0, Prelude__$3C$3E$3E_(null, _$$2.h2, Prelude_Nil(null)), _sc$$0.h1))); } }); case "VVar": { const sc$$13 = Lib_Eval_lookupVar(_$$0, _$$2.h1); switch (sc$$13.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("lookup ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$2.h1)))(" is Nothing in env "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$0)))(""))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))); case "Just": { const _sc$$1 = sc$$13.h1; switch (_sc$$1.tag) { case "VVar": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("lookup ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$2.h1)))(" is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(sc$$13.h1)))(""))), ( _ ) => { const sc$$20 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_sc$$1.h1)(_$$2.h1); switch (sc$$20) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(Lib_Types_VVar(_sc$$1.h0, _sc$$1.h1, _sc$$1.h2), _$$2.h2), ( val ) => (Lib_Eval_evalCase(_$$0, _$$1, val, _$$3))); case "True": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(sc$$13.h1, _$$2.h2), ( val ) => (Lib_Eval_evalCase(_$$0, _$$1, val, _$$3))); } break; } } break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CASE BAIL sc ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$2)))(" vs "))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("env is ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$0)))(""))), ( _1 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))))); } break; case "CaseDefault": switch (_$$2.tag) { case "VVar": { const sc$$11 = Lib_Eval_lookupVar(_$$0, _$$2.h1); switch (sc$$11.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("lookup ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$2.h1)))(" is Nothing in env "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$0)))(""))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))); case "Just": { const _sc$$1 = sc$$11.h1; switch (_sc$$1.tag) { case "VVar": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("lookup ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$2.h1)))(" is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(sc$$11.h1)))(""))), ( _ ) => { const sc$$18 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_sc$$1.h1)(_$$2.h1); switch (sc$$18) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(Lib_Types_VVar(_sc$$1.h0, _sc$$1.h1, _sc$$1.h2), _$$2.h2), ( val ) => (Lib_Eval_evalCase(_$$0, _$$1, val, _$$3))); case "True": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(sc$$11.h1, _$$2.h2), ( val ) => (Lib_Eval_evalCase(_$$0, _$$1, val, _$$3))); } break; } } break; } default: return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_Just(null, eta)), Lib_Eval_eval(Prelude__$3A$3A_(null, _$$2, _$$0), _$$1, _sc$$0.h0)); } break; default: switch (_$$2.tag) { case "VVar": { const sc$$10 = Lib_Eval_lookupVar(_$$0, _$$2.h1); switch (sc$$10.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("lookup ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$2.h1)))(" is Nothing in env "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$0)))(""))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))); case "Just": { const _sc$$1 = sc$$10.h1; switch (_sc$$1.tag) { case "VVar": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("lookup ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$2.h1)))(" is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(sc$$10.h1)))(""))), ( _ ) => { const sc$$17 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_sc$$1.h1)(_$$2.h1); switch (sc$$17) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(Lib_Types_VVar(_sc$$1.h0, _sc$$1.h1, _sc$$1.h2), _$$2.h2), ( val ) => (Lib_Eval_evalCase(_$$0, _$$1, val, _$$3))); case "True": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(sc$$10.h1, _$$2.h2), ( val ) => (Lib_Eval_evalCase(_$$0, _$$1, val, _$$3))); } break; } } break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CASE BAIL sc ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$2)))(" vs "))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("env is ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$0)))(""))), ( _1 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))))); } break; } break; } default: switch (_$$2.tag) { case "VVar": { const sc$$7 = Lib_Eval_lookupVar(_$$0, _$$2.h1); switch (sc$$7.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("lookup ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$2.h1)))(" is Nothing in env "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$0)))(""))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))); case "Just": { const _sc$$0 = sc$$7.h1; switch (_sc$$0.tag) { case "VVar": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("lookup ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$2.h1)))(" is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(sc$$7.h1)))(""))), ( _ ) => { const sc$$14 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_sc$$0.h1)(_$$2.h1); switch (sc$$14) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(Lib_Types_VVar(_sc$$0.h0, _sc$$0.h1, _sc$$0.h2), _$$2.h2), ( val ) => (Lib_Eval_evalCase(_$$0, _$$1, val, _$$3))); case "True": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(sc$$7.h1, _$$2.h2), ( val ) => (Lib_Eval_evalCase(_$$0, _$$1, val, _$$3))); } break; } } break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("CASE BAIL sc ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$2)))(" vs "))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("env is ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$0)))(""))), ( _1 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))))); } break; } }; const Lib_Types_catchError = ( a$$0, _$$1, _$$2 ) => (Lib_Types_MkM(null, ( tc ) => (Prelude__$3E$3E$3D_(null, null, null, Prelude_Prelude_Monad$20Prelude_IO, _$$1.h1(tc), ( $$sc ) => { switch ($$sc.tag) { case "Right": { const _sc$$0 = $$sc.h2; return Prelude_pure(null, Prelude_Prelude_Monad$20Prelude_IO)(null)(Prelude_Right(null, null, Prelude__$2C_(null, null, _sc$$0.h2, _sc$$0.h3))); break; } case "Left": return Lib_Types__runM(null, _$$2($$sc.h2))(tc); } })))); -const Lib_Eval_tryEval = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "VRef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$6 = Lib_TopContext_lookup(_$$1.h1, top); switch (sc$$6.tag) { case "Just": { const _sc$$0 = sc$$6.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "Fn": return Lib_Types_catchError(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("app ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" to "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$1.h2)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$1.h0), ( vtm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tm is ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$1.h0))))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(vtm, _$$1.h2), ( val ) => { switch (val.tag) { case "VLetRec": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); case "VCase": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, val)); } }))))))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }; +const Lib_Eval_tryEval = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "VRef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$6 = Lib_TopContext_lookup(_$$1.h1, top); switch (sc$$6.tag) { case "Just": { const _sc$$0 = sc$$6.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "Fn": return Lib_Types_catchError(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("app ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" to "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_SnocList$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$1.h2)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(_$$0, "CBN", _sc$$1.h0), ( vtm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tm is ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$1.h0))))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(vtm, _$$1.h2), ( val ) => { switch (val.tag) { case "VLetRec": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); case "VCase": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, val)); } }))))))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tryEval blocked on undefined ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1.h1)))(""))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))); } break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tryEval blocked on undefined ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1.h1)))(""))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)))); } }); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }; const Lib_Eval_forceType = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "VMeta": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_lookupMeta(_$$1.h1), ( meta ) => { switch (meta.tag) { case "Solved": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(meta.h2, _$$1.h2), ( eta ) => (Lib_Eval_forceType(_$$0, eta))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_VMeta(_$$1.h0, _$$1.h1, _$$1.h2)); } }); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_tryEval(_$$0, _$$1), ( $$sc ) => { switch ($$sc.tag) { case "Just": return Lib_Eval_forceType(_$$0, $$sc.h1); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$1); } }); } }; const Lib_Eval_unlet = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "VVar": { const sc$$5 = Lib_Eval_lookupVar(_$$0, _$$1.h1); switch (sc$$5.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("lookup ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$1.h1)))(" is Nothing in env "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(_$$0)))(""))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$1))); case "Just": { const _sc$$0 = sc$$5.h1; switch (_sc$$0.tag) { case "VVar": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("lookup ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$1.h1)))(" is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(sc$$5.h1)))(""))), ( _ ) => { const sc$$12 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_sc$$0.h1)(_$$1.h1); switch (sc$$12) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(Lib_Types_VVar(_sc$$0.h0, _sc$$0.h1, _sc$$0.h2), _$$1.h2), ( eta ) => (Lib_Eval_unlet(_$$0, eta))); case "True": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$1); } }); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_vappSpine(sc$$5.h1, _$$1.h2), ( eta ) => (Lib_Eval_unlet(_$$0, eta))); } break; } } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$1); } }; const Lib_Types_VLet = ( h0, h1, h2, h3 ) => ({ tag: "VLet", h0: h0, h1: h1, h2: h2, h3: h3 }); @@ -823,7 +824,7 @@ const Lib_Elab_REC_matchedConstructors = ( arg ) => { const _sc$$0 = arg.h1; swi const Lib_Elab_matchedConstructors = ( _$$0, _$$1 ) => (bouncer(Lib_Elab_REC_matchedConstructors, { tag: "Lib.Elab.matchedConstructors", h0: _$$0, h1: _$$1 })); const Lib_Elab_vprint = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Prelude_length$27(null, Lib_Types__env(_$$0)), _$$1), ( tm ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Prettier_render(90, Lib_Types_pprint(Lib_Types_names(_$$0), tm)))))); const Lib_Elab_getConstructors_lookupTCon_lookupDCon = ( _, _1, _2, _3, _4, _5, _6, _7, _$$8 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$10 = Lib_TopContext_lookup(_$$8, top); switch (sc$$10.tag) { case "Nothing": return Lib_Types_error(null, _3, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal Error: DCon ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$8)))(" not found")); case "Just": { const _sc$$0 = sc$$10.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "DCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, _sc$$0.h1, Prelude__$2C_(null, null, _sc$$1.h1, _sc$$0.h2))); default: return Lib_Types_error(null, _3, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal Error: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$8)))(" is not a DCon")); } break; } } })); -const Lib_Elab_getConstructors_lookupTCon = ( _, _1, _2, _3, _4, _5, _6, _$$7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$9 = Lib_TopContext_lookup(_4, top); switch (sc$$9.tag) { case "Just": { const _sc$$0 = sc$$9.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "TCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_sc$$1.h1); default: return Lib_Types_error(null, _1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Not a type constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_4)))("")); } break; } default: return Lib_Types_error(null, _1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Not a type constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_4)))("")); } })); +const Lib_Elab_getConstructors_lookupTCon = ( _, _1, _2, _3, _4, _5, _6, _$$7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$9 = Lib_TopContext_lookup(_4, top); switch (sc$$9.tag) { case "Just": { const _sc$$0 = sc$$9.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "TCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_sc$$1.h1); default: return Lib_Types_error(null, _1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Not a type constructor: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_4)))("")); } break; } default: return Lib_Types_error(null, _1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Not a type constructor: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_4)))("")); } })); const Lib_Elab_getConstructors = ( _$$0, _$$1, _$$2 ) => { switch (_$$2.tag) { case "VRef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_getConstructors_lookupTCon(_$$0, _$$1, _$$2, _$$2.h0, _$$2.h1, _$$2.h2, null, _$$2.h1), ( $$sc ) => (Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Elab_getConstructors_lookupTCon_lookupDCon(_$$0, _$$1, _$$2, _$$2.h0, _$$2.h1, _$$2.h2, null, null, eta)))($$sc))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_vprint(_$$0, _$$2), ( tms ) => (Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Can't split - not VRef: ")(tms))("")))); } }; const Lib_Elab_buildLitCases_isDefault = ( _, _1, _2, _3, _4, _5, _$$6 ) => { const sc$$7 = Prelude_find(null, ( eta ) => (Prelude__$2218_(null, null, null, Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(_3), ( eta ) => (Prelude_fst(null, null, eta)), eta)), Lib_Syntax__cons(_$$6)); switch (sc$$7.tag) { case "Nothing": return "True"; case "Just": { const _sc$$0 = sc$$7.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "PatWild": return "True"; case "PatVar": return "True"; default: return "False"; } break; } } }; const Prelude_Prelude_Monad$20Prelude_Maybe$2Cpure = ( a$$0, _$$1 ) => (Prelude_Just(null, _$$1)); @@ -1007,14 +1008,14 @@ const Lib_TopContext_REC_typeName = ( arg ) => { const _sc$$0 = arg.h0; switch ( const Lib_TopContext_typeName = ( _$$0 ) => (bouncer(Lib_TopContext_REC_typeName, { tag: "Lib.TopContext.typeName", h0: _$$0 })); const Lib_TopContext_addHint = ( _$$0 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$2 = Lib_TopContext_lookup(_$$0, top); switch (sc$$2.tag) { case "Nothing": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "Just": { const sc$$5 = Lib_TopContext_typeName(Lib_Types__type(sc$$2.h1)); switch (sc$$5.tag) { case "Nothing": return Lib_Types_error(null, Lib_Types__fc(sc$$2.h1), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find tcon name for ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))("")); case "Just": { const xs = Prelude_fromMaybe(null, Prelude_Nil(null), Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, sc$$5.h1, Lib_Types__hints(top))); const hints = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, sc$$5.h1, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _$$0, Lib_Types__type(sc$$2.h1)), xs), Lib_Types__hints(top)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_putTop(Lib_Types_MkTop(Lib_Types__modules(top), Lib_Types__imported(top), hints, Lib_Types__ns(top), Lib_Types__defs(top), Lib_Types__metaCtx(top), Lib_Types__verbose(top), Lib_Types__errors(top), Lib_Types__ops(top))), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"))); break; } } break; } } })); const Lib_TopContext_setFlag = ( _$$0, _$$1, _$$2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$4 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__defs(top)); switch (sc$$4.tag) { case "Nothing": return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))(" not declared")); case "Just": { const _sc$$0 = sc$$4.h1; return Lib_Types_modifyTop(( $$case ) => { const defs = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types_MkEntry(_sc$$0.h0, _$$0, _sc$$0.h2, _sc$$0.h3, Prelude__$3A$3A_(null, _$$2, _sc$$0.h4)), $$case.h4); return Lib_Types_MkTop($$case.h0, $$case.h1, $$case.h2, $$case.h3, defs, $$case.h5, $$case.h6, $$case.h7, $$case.h8); }); break; } } })); -const Lib_Util_Prelude_Show$20Lib_Util_Binder$2Cshow = ( _$$0 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("(")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Quant)(_$$0.h3)))(""))(_$$0.h1))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Icit)(_$$0.h2)))(" : ... :: Nil)")); +const Lib_Util_Prelude_Show$20Lib_Util_Binder$2Cshow = ( _$$0 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("[")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Quant)(_$$0.h3)))(""))(_$$0.h1))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Icit)(_$$0.h2)))(" : ...]")); const Lib_Util_Prelude_Show$20Lib_Util_Binder = Prelude_MkShow(null, Lib_Util_Prelude_Show$20Lib_Util_Binder$2Cshow); const Lib_ProcessDecl_processInstance_getFields_tenv = ( _, _1, _2, _3, _4, _5, _$$6 ) => { switch (_$$6) { case 0: return Prelude_Nil(null); default: { const x = (_$$6) - (1); return Prelude__$3A$3A_(null, Lib_Types_VVar(Lib_Common_emptyFC, Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(x), Prelude_Lin(null)), Lib_ProcessDecl_processInstance_getFields_tenv(_, _1, _2, _3, _4, _5, x)); break; } } }; const Lib_ProcessDecl_processInstance = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Instance ")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$2))))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const tyFC = Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(_$$2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$2, Lib_Types_VU(_$$1)), ( vty ) => { const sc$$13 = Lib_Util_splitTele(vty); const env = Lib_ProcessDecl_processInstance_getFields_tenv(_$$0, _$$1, _$$2, _$$3, null, null, Prelude_length(null, sc$$13.h3)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("codomain ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2))))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tele is ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Util_Prelude_Show$20Lib_Util_Binder))(sc$$13.h3)))(""))), ( _3 ) => { const instname = Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2)); const sigDecl = Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(null, instname, Prelude_Nil(null)), _$$2); const sc$$23 = Lib_TopContext_lookupRaw(instname, top); switch (sc$$23.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, sigDecl), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_setFlag(Lib_Common_QN(_$$0, instname), _$$1, "Hint"), ( _5 ) => (Lib_TopContext_addHint(Lib_Common_QN(_$$0, instname)))))), ( _4 ) => { const sc$$24 = Prelude__$3C$$$3E_(null, Prelude_Prelude_Functor$20Prelude_Maybe, null, null, Lib_Elab_collectDecl, _$$3); switch (sc$$24.tag) { case "Just": { const sc$$27 = Lib_Util_funArgs(sc$$13.h2); const _sc$$0 = sc$$27.h2; switch (_sc$$0.tag) { case "Ref": { const sc$$34 = Lib_TopContext_lookup(_sc$$0.h1, top); switch (sc$$34.tag) { case "Just": { const _sc$$1 = sc$$34.h1; const _sc$$2 = _sc$$1.h3; switch (_sc$$2.tag) { case "TCon": { const _sc$$3 = _sc$$2.h1; switch (_sc$$3.tag) { case "_::_": { const _sc$$4 = _sc$$3.h2; switch (_sc$$4.tag) { case "Nil": { const sc$$49 = Lib_TopContext_lookup(_sc$$3.h1, top); switch (sc$$49.tag) { case "Just": { const _sc$$5 = sc$$49.h1; const _sc$$6 = _sc$$5.h3; switch (_sc$$6.tag) { case "DCon": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$5.h2), ( $$sc ) => { switch ($$sc.tag) { case "VPi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dcty ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$5.h2))))(""))), ( _5 ) => { const sc$$69 = Lib_Util_funArgs(sc$$13.h2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("traverse ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Types_showTm)(sc$$69.h3))))(""))), ( _6 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Eval_eval(env, "CBN", eta)))(sc$$69.h3), ( args$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _7 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("args' is ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(args$27)))(""))), ( _7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$2, _$$3, null, null, null, null, $$sc, args$27), ( appty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processInstance_getFields(_$$0, _$$1, _$$2, _$$3, null, appty, env, Prelude_Nil(null)), ( conTele ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, conTele, ( $$case ) => { const _sc$$7 = $$case.h2; switch (_sc$$7) { case "Explicit": { const ty$27 = Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$88 = Prelude_the(Lib_Util_Binder, x); return Lib_Types_Pi(sc$$88.h0, sc$$88.h1, sc$$88.h2, sc$$88.h3, sc$$88.h4, acc); }), $$case.h4, sc$$13.h3); const nm$27 = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(instname))(","))($$case.h1))(""); const sc$$88 = Prelude_find(null, ( x ) => { const sc$$89 = Prelude_the(Lib_Syntax_Decl, x); switch (sc$$89.tag) { case "FunDef": return Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(sc$$89.h1)($$case.h1); default: return "False"; } }, sc$$24.h1); switch (sc$$88.tag) { case "Just": { const _sc$$8 = sc$$88.h1; switch (_sc$$8.tag) { case "FunDef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), _sc$$8.h0, ty$27, Lib_Types_Axiom, Prelude_Nil(null)), ( _8 ) => { const decl = Lib_Syntax_FunDef(_sc$$8.h0, nm$27, _sc$$8.h2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _9 ) => ("***")), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _10 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("«")(nm$27))("» : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), ty$27))))(""))), ( _10 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _11 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _11 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, decl)))))))); }); default: return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), defs), ( decl ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _8 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _8 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))), ( _8 ) => { const _sc$$7 = _sc$$3.h1; const decl = Lib_Syntax_FunDef(_$$1, instname, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, Lib_Syntax_RVar(_$$1, instname), Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS(_$$0, _$$1, _$$2, _$$3, null, null, null, instname, conTele, Lib_Syntax_RVar(_$$1, _sc$$7.h1))), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _9 ) => ("SIGDECL")), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _10 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(sigDecl))))(""))), ( _10 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _11 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _11 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))))); }))))))))))))); }); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)($$sc), "dcty not Pi"); } }); default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2))))(" doesn't appear to be a TCon application")); } break; } default: return Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Forward declaration ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl)(sigDecl)))(""))); } }); case "Just": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"), ( _4 ) => { const sc$$24 = Prelude__$3C$$$3E_(null, Prelude_Prelude_Functor$20Prelude_Maybe, null, null, Lib_Elab_collectDecl, _$$3); switch (sc$$24.tag) { case "Just": { const sc$$27 = Lib_Util_funArgs(sc$$13.h2); const _sc$$0 = sc$$27.h2; switch (_sc$$0.tag) { case "Ref": { const sc$$34 = Lib_TopContext_lookup(_sc$$0.h1, top); switch (sc$$34.tag) { case "Just": { const _sc$$1 = sc$$34.h1; const _sc$$2 = _sc$$1.h3; switch (_sc$$2.tag) { case "TCon": { const _sc$$3 = _sc$$2.h1; switch (_sc$$3.tag) { case "_::_": { const _sc$$4 = _sc$$3.h2; switch (_sc$$4.tag) { case "Nil": { const sc$$49 = Lib_TopContext_lookup(_sc$$3.h1, top); switch (sc$$49.tag) { case "Just": { const _sc$$5 = sc$$49.h1; const _sc$$6 = _sc$$5.h3; switch (_sc$$6.tag) { case "DCon": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$5.h2), ( $$sc ) => { switch ($$sc.tag) { case "VPi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dcty ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$5.h2))))(""))), ( _5 ) => { const sc$$69 = Lib_Util_funArgs(sc$$13.h2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("traverse ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Types_showTm)(sc$$69.h3))))(""))), ( _6 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Eval_eval(env, "CBN", eta)))(sc$$69.h3), ( args$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _7 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("args' is ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(args$27)))(""))), ( _7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$2, _$$3, null, null, null, null, $$sc, args$27), ( appty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processInstance_getFields(_$$0, _$$1, _$$2, _$$3, null, appty, env, Prelude_Nil(null)), ( conTele ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, conTele, ( $$case ) => { const _sc$$7 = $$case.h2; switch (_sc$$7) { case "Explicit": { const ty$27 = Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$88 = Prelude_the(Lib_Util_Binder, x); return Lib_Types_Pi(sc$$88.h0, sc$$88.h1, sc$$88.h2, sc$$88.h3, sc$$88.h4, acc); }), $$case.h4, sc$$13.h3); const nm$27 = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(instname))(","))($$case.h1))(""); const sc$$88 = Prelude_find(null, ( x ) => { const sc$$89 = Prelude_the(Lib_Syntax_Decl, x); switch (sc$$89.tag) { case "FunDef": return Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(sc$$89.h1)($$case.h1); default: return "False"; } }, sc$$24.h1); switch (sc$$88.tag) { case "Just": { const _sc$$8 = sc$$88.h1; switch (_sc$$8.tag) { case "FunDef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), _sc$$8.h0, ty$27, Lib_Types_Axiom, Prelude_Nil(null)), ( _8 ) => { const decl = Lib_Syntax_FunDef(_sc$$8.h0, nm$27, _sc$$8.h2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _9 ) => ("***")), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _10 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("«")(nm$27))("» : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), ty$27))))(""))), ( _10 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _11 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _11 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, decl)))))))); }); default: return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), defs), ( decl ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _8 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _8 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))), ( _8 ) => { const _sc$$7 = _sc$$3.h1; const decl = Lib_Syntax_FunDef(_$$1, instname, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, Lib_Syntax_RVar(_$$1, instname), Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS(_$$0, _$$1, _$$2, _$$3, null, null, null, instname, conTele, Lib_Syntax_RVar(_$$1, _sc$$7.h1))), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _9 ) => ("SIGDECL")), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _10 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(sigDecl))))(""))), ( _10 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _11 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _11 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))))); }))))))))))))); }); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)($$sc), "dcty not Pi"); } }); default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2))))(" doesn't appear to be a TCon application")); } break; } default: return Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Forward declaration ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl)(sigDecl)))(""))); } }); } }))); }); })))))); const Prelude__$D7_ = ( h0, h1 ) => ({ tag: "_×_", h0: h0, h1: h1 }); const Lib_ProcessDecl_processRecord = ( _$$0, _$$1, _$$2, _$$3, _$$4, _$$5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => ("Record")), ( _1 ) => { const fields = Lib_ProcessDecl_getSigs(_$$5); const dcName = Prelude_fromMaybe(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Mk")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$2)))(""), _$$4); const tcType = Lib_ProcessDecl_teleToPi(_$$3, Lib_Syntax_RU(_$$1)); const tail = Prelude_foldl(null, null, ( acc ) => (( bi ) => { const sc$$13 = Prelude_the(Prelude__$D7_(null, null), bi); const _sc$$0 = sc$$13.h2; return Lib_Syntax_RApp(_sc$$0.h0, acc, Lib_Syntax_RVar(_sc$$0.h0, _sc$$0.h1), _sc$$0.h2); }), Lib_Syntax_RVar(_$$1, _$$2), _$$3); const dcType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$14 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$0 = sc$$14.h3; return Lib_Syntax_RPi(sc$$14.h2, Lib_Types_BI(sc$$14.h2, _sc$$0.h2, "Explicit", "Many"), _sc$$0.h3, acc); }), tail, fields)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tcon type ")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(tcType))))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dcon type ")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(dcType))))(""))), ( _3 ) => { const decl = Lib_Syntax_Data(_$$1, _$$2, tcType, Prelude__$3A$3A_(null, Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(null, dcName, Prelude_Nil(null)), dcType), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => ("Decl:")), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _5 ) => (Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, decl), ( _6 ) => (Prelude_ignore(null, null, Lib_Types_Prelude_Functor$20Lib_Types_M)(Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, fields, ( $$case ) => { const _sc$$0 = $$case.h3; const funType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Lib_Syntax_RPi($$case.h2, Lib_Types_BI($$case.h2, "_", "Explicit", "Many"), tail, _sc$$0.h3)); const autoPat = Prelude_foldl(null, null, ( acc ) => (( x ) => { const sc$$32 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$1 = sc$$32.h3; return Lib_Syntax_RApp(sc$$32.h2, acc, Lib_Syntax_RVar(sc$$32.h2, _sc$$1.h2), "Explicit"); }), Lib_Syntax_RVar(_$$1, dcName), fields); const pname = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(".")(_sc$$0.h2); const lhs = Prelude_foldl(null, null, ( acc ) => (( x ) => { const sc$$34 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$1 = sc$$34.h2; return Lib_Syntax_RApp(_sc$$1.h0, acc, Lib_Syntax_RVar(_sc$$1.h0, _sc$$1.h1), "Implicit"); }), Lib_Syntax_RVar($$case.h2, pname), _$$3); const lhs1 = Lib_Syntax_RApp(_$$1, lhs, autoPat, "Explicit"); const pdecl = Lib_Syntax_FunDef($$case.h2, pname, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, lhs1, Lib_Syntax_RVar($$case.h2, _sc$$0.h2)), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _7 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(pname))(" : "))(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(funType))))(""))), ( _7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _8 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(pdecl))))(""))), ( _8 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, Lib_Syntax_TypeSig($$case.h2, Prelude__$3A$3A_(null, pname, Prelude_Nil(null)), funType)), ( _9 ) => (Lib_ProcessDecl_processDecl(_$$0, pdecl))))))); })))))))); }))); })))); const Lib_ProcessDecl_processDecl = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Record": return Lib_ProcessDecl_processRecord(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case "Instance": return Lib_ProcessDecl_processInstance(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "Class": return Lib_ProcessDecl_processClass(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3); case "PMixFix": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "PFunc": return Lib_ProcessDecl_processPrimFn(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case "PType": return Lib_ProcessDecl_processPrimType(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "ShortData": return Lib_ProcessDecl_processShortData(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "Data": return Lib_ProcessDecl_processData(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3); case "DCheck": return Lib_ProcessDecl_processCheck(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "FunDef": return Lib_ProcessDecl_processDef(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "TypeSig": return Lib_ProcessDecl_processTypeSig(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); } }; -const Main_processModule_tryProcessDecl = ( _, _1, _2, _3, _4, _5, _6, _$$7, _$$8 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_tryError(null, Lib_ProcessDecl_processDecl(_$$7, _$$8)), ( $$sc ) => { switch ($$sc.tag) { case "Left": return Lib_TopContext_addError($$sc.h2); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); } })); +const Main_processModule_tryProcessDecl = ( _, _1, _2, _3, _4, _5, _6, _$$7, _$$8, _$$9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_tryError(null, Lib_ProcessDecl_processDecl(_$$8, _$$9)), ( $$sc ) => { switch ($$sc.tag) { case "Left": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Common_showError(_$$7, $$sc.h2)), ( _7 ) => (Lib_TopContext_addError($$sc.h2))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); } })); const Lib_Types__eflags = ( _$$0 ) => (_$$0.h4); const Lib_Types_Prelude_Eq$20Lib_Types_EFlag$2C_$3D$3D_ = ( _$$0, _$$1 ) => { switch (_$$1) { case "Inline": switch (_$$0) { case "Inline": return "True"; default: return "False"; } break; case "Hint": switch (_$$0) { case "Hint": return "True"; default: return "False"; } break; } }; const Lib_Types_Prelude_Eq$20Lib_Types_EFlag = Prelude_MkEq(null, ( eta ) => (( eta1 ) => (Lib_Types_Prelude_Eq$20Lib_Types_EFlag$2C_$3D$3D_(eta, eta1)))); @@ -1257,7 +1258,7 @@ const Node_readFile = (fn) => (w) => { return Prelude_MkIORes(null, result, w) }; const Lib_Types_emptyModCtx = ( _$$0 ) => (Lib_Types_MkModCtx(_$$0, Data_SortedMap_EmptyMap(null, null), Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), 0, "NoCheck"), Data_SortedMap_EmptyMap(null, null))); -const Main_processModule = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const modns = Prelude_snoc(null, _$$3.h0, _$$3.h1); const name = Prelude_joinBy(".", modns); const sc$$10 = Data_SortedMap_lookupMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, Lib_Types__modules(top)); switch (sc$$10.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, Lib_Types_emptyModCtx(""), Lib_Types__modules(top)), Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _ ) => { const fn = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude_joinBy("/", Prelude__$3A$3A_(null, _$$1, _$$3.h0)))(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("/")(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(_$$3.h1)(".newt"))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Node_readFile(fn)), ( $$sc ) => { switch ($$sc.tag) { case "Right": { const sc$$19 = Lib_Tokenizer_tokenise(fn, $$sc.h2); switch (sc$$19.tag) { case "Right": { const sc$$23 = Lib_Parser_Impl_partialParse(null, fn, Lib_Parser_parseModHeader, Lib_Types__ops(top), sc$$19.h2); switch (sc$$23.tag) { case "Right": { const _sc$$0 = sc$$23.h2; const _sc$$1 = _sc$$0.h2; const _sc$$2 = _sc$$0.h3; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("scan imports for module ")(_sc$$1.h3))(""))), ( _1 ) => { const ns = Prelude_split(_sc$$1.h3, "."); const sc$$41 = Data_List1_unsnoc(null, Data_List1_split1(_sc$$1.h3, ".")); const sc$$46 = Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_$$3)(Lib_Common_QN(sc$$41.h2, sc$$41.h3)); switch (sc$$46) { case "True": { const sc$$47 = Lib_Parser_Impl_partialParse(null, fn, Lib_Parser_parseImports, _sc$$2.h2, _sc$$2.h3); switch (sc$$47.tag) { case "Right": { const _sc$$3 = sc$$47.h2; const _sc$$4 = _sc$$3.h3; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _sc$$3.h2, ( $$case ) => { const sc$$63 = Data_List1_unsnoc(null, Data_List1_split1($$case.h1, ".")); const qname = Lib_Common_QN(sc$$63.h2, sc$$63.h3); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_elem(null, Prelude_Prelude_Eq$20Prim_String, $$case.h1, _$$2), ( _2 ) => (Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("import loop ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(name)))(" -> "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)($$case.h1)))("")))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_processModule($$case.h0, _$$1, Prelude__$3A$3A_(null, name, _$$2), qname), ( _3 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_split($$case.h1, ".")))))); }), ( imported ) => { const imported1 = Prelude_snoc(null, imported, Main_primNS); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Serialize_checksum($$sc.h2)), ( srcSum ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_moduleHash(srcSum, imported1), ( csum ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("module ")(_sc$$1.h3))("")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Serialize_loadModule(_$$3, csum), ( $$sc1 ) => { switch ($$sc1.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("MODNS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(modns)))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_parseDecls(fn, Lib_Types__ops(top2), _sc$$4.h3, Prelude_Lin(null)), ( $$sc2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top3 ) => { const freshMC = Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), 0, "CheckAll"); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top4 ) => (Lib_Types_MkTop(Lib_Types__modules(top4), imported1, Data_SortedMap_EmptyMap(null, null), modns, Data_SortedMap_EmptyMap(null, null), freshMC, Lib_Types__verbose(top4), Lib_Types__errors(top4), $$sc2.h3))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, imported1, ( ns1 ) => { const sc$$80 = Data_SortedMap_lookupMap$27(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), ns1, Lib_Types__modules(top3)); switch (sc$$80.tag) { case "Just": return Main_importHints(Data_SortedMap_listValues(null, null, Lib_Types__modDefs(sc$$80.h1))); default: return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("namespace ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(ns1)))(" missing")); } }), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _6 ) => ("process Decls")), ( _6 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Main_processModule_tryProcessDecl(_$$0, _$$1, _$$2, _$$3, _$$3.h0, _$$3.h1, null, ns, eta)))(Lib_Elab_collectDecl($$sc2.h2)), ( _7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top4 ) => { const mod = Lib_Types_MkModCtx(csum, Lib_Types__defs(top4), Lib_Types__metaCtx(top4), Lib_Types__ops(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( errors ) => { const sc$$85 = Prelude__$26$26_(Prelude__$2F$3D_(null, Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Eq$20Prim_String), _$$2, Prelude_Nil(null)), Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(Prelude_length$27(null, errors))(0)); switch (sc$$85) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"), ( _8 ) => { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, mod, Lib_Types__modules(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( $$sc3 ) => { switch ($$sc3.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_logMetas(Prelude_reverse(null)(Data_SortedMap_listValues(null, null, Lib_Types__metas(Lib_Types__metaCtx(top4))))), ( _10 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, eta)), ( eta ) => (Lib_Common_showError($$sc.h2, eta)), eta)))($$sc3), ( _10 ) => (Node_exitFailure(null, "Compile failed"))); } }))); }); case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Serialize_dumpModule(_$$3, $$sc.h2, mod), ( _8 ) => { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, mod, Lib_Types__modules(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( $$sc3 ) => { switch ($$sc3.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_logMetas(Prelude_reverse(null)(Data_SortedMap_listValues(null, null, Lib_Types__metas(Lib_Types__metaCtx(top4))))), ( _10 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Prelude__$2218_(null, null, null, ( eta ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, eta)), ( eta ) => (Lib_Common_showError($$sc.h2, eta)), eta)))($$sc3), ( _10 ) => (Node_exitFailure(null, "Compile failed"))); } }))); }); } }); }))))))))); }))))))); case "Just": { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, $$sc1.h1, Lib_Types__modules(top1)); const ops = Data_SortedMap_foldMap(null, null, Prelude_Prelude_Ord$20Prim_String, ( eta ) => (( eta1 ) => (Prelude_const(null, null, eta, eta1))), Lib_Types__ops(top1), Data_SortedMap_toList(null, null, Lib_Types__ctxOps($$sc1.h1))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), ops))), ( _3 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); break; } } }))))))))); }); break; } case "Left": { const _sc$$3 = sc$$47.h2; return Node_exitFailure(null, Lib_Common_showError($$sc.h2, _sc$$3.h2)); break; } } break; } default: return Node_exitFailure(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_sc$$1.h2)))(": module name "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_sc$$1.h3)))(" doesn't match file name "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(fn)))("")); } }); break; } case "Left": { const _sc$$0 = sc$$23.h2; return Node_exitFailure(null, Lib_Common_showError($$sc.h2, _sc$$0.h2)); break; } } break; } case "Left": return Node_exitFailure(null, Lib_Common_showError($$sc.h2, sc$$19.h2)); } break; } case "Left": return Node_exitFailure(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_$$0)))(": error reading "))(fn))(": "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)($$sc.h2)))("")); } }); }); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(""); } })); +const Main_processModule = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const modns = Prelude_snoc(null, _$$3.h0, _$$3.h1); const name = Prelude_joinBy(".", modns); const sc$$10 = Data_SortedMap_lookupMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, Lib_Types__modules(top)); switch (sc$$10.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, Lib_Types_emptyModCtx(""), Lib_Types__modules(top)), Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _ ) => { const fn = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude_joinBy("/", Prelude__$3A$3A_(null, _$$1, _$$3.h0)))(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("/")(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(_$$3.h1)(".newt"))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Node_readFile(fn)), ( $$sc ) => { switch ($$sc.tag) { case "Right": { const sc$$19 = Lib_Tokenizer_tokenise(fn, $$sc.h2); switch (sc$$19.tag) { case "Right": { const sc$$23 = Lib_Parser_Impl_partialParse(null, fn, Lib_Parser_parseModHeader, Lib_Types__ops(top), sc$$19.h2); switch (sc$$23.tag) { case "Right": { const _sc$$0 = sc$$23.h2; const _sc$$1 = _sc$$0.h2; const _sc$$2 = _sc$$0.h3; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("scan imports for module ")(_sc$$1.h3))(""))), ( _1 ) => { const ns = Prelude_split(_sc$$1.h3, "."); const sc$$41 = Data_List1_unsnoc(null, Data_List1_split1(_sc$$1.h3, ".")); const sc$$46 = Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_$$3)(Lib_Common_QN(sc$$41.h2, sc$$41.h3)); switch (sc$$46) { case "True": { const sc$$47 = Lib_Parser_Impl_partialParse(null, fn, Lib_Parser_parseImports, _sc$$2.h2, _sc$$2.h3); switch (sc$$47.tag) { case "Right": { const _sc$$3 = sc$$47.h2; const _sc$$4 = _sc$$3.h3; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _sc$$3.h2, ( $$case ) => { const sc$$63 = Data_List1_unsnoc(null, Data_List1_split1($$case.h1, ".")); const qname = Lib_Common_QN(sc$$63.h2, sc$$63.h3); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_when(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_elem(null, Prelude_Prelude_Eq$20Prim_String, $$case.h1, _$$2), ( _2 ) => (Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("import loop ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(name)))(" -> "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)($$case.h1)))("")))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_processModule($$case.h0, _$$1, Prelude__$3A$3A_(null, name, _$$2), qname), ( _3 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_split($$case.h1, ".")))))); }), ( imported ) => { const imported1 = Prelude_snoc(null, imported, Main_primNS); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Serialize_checksum($$sc.h2)), ( srcSum ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_moduleHash(srcSum, imported1), ( csum ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("module ")(_sc$$1.h3))("")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Serialize_loadModule(_$$3, csum), ( $$sc1 ) => { switch ($$sc1.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("MODNS ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(modns)))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_parseDecls(fn, Lib_Types__ops(top2), _sc$$4.h3, Prelude_Lin(null)), ( $$sc2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top3 ) => { const freshMC = Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), 0, "CheckAll"); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top4 ) => (Lib_Types_MkTop(Lib_Types__modules(top4), imported1, Data_SortedMap_EmptyMap(null, null), modns, Data_SortedMap_EmptyMap(null, null), freshMC, Lib_Types__verbose(top4), Lib_Types__errors(top4), $$sc2.h3))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, imported1, ( ns1 ) => { const sc$$80 = Data_SortedMap_lookupMap$27(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), ns1, Lib_Types__modules(top3)); switch (sc$$80.tag) { case "Just": return Main_importHints(Data_SortedMap_listValues(null, null, Lib_Types__modDefs(sc$$80.h1))); default: return Lib_Types_error(null, Lib_Common_emptyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("namespace ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(ns1)))(" missing")); } }), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _6 ) => ("process Decls")), ( _6 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Main_processModule_tryProcessDecl(_$$0, _$$1, _$$2, _$$3, _$$3.h0, _$$3.h1, null, $$sc.h2, ns, eta)))(Lib_Elab_collectDecl($$sc2.h2)), ( _7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top4 ) => { const mod = Lib_Types_MkModCtx(csum, Lib_Types__defs(top4), Lib_Types__metaCtx(top4), Lib_Types__ops(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( errors ) => { const sc$$85 = Prelude__$26$26_(Prelude__$2F$3D_(null, Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Eq$20Prim_String), _$$2, Prelude_Nil(null)), Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(Prelude_length$27(null, errors))(0)); switch (sc$$85) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"), ( _8 ) => { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, mod, Lib_Types__modules(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( $$sc3 ) => { switch ($$sc3.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_logMetas(Prelude_reverse(null)(Data_SortedMap_listValues(null, null, Lib_Types__metas(Lib_Types__metaCtx(top4))))), ( _10 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); default: return Node_exitFailure(null, "Compile failed"); } }))); }); case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Serialize_dumpModule(_$$3, $$sc.h2, mod), ( _8 ) => { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, mod, Lib_Types__modules(top4)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), Lib_Types__ops($$ru)))), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Data_IORef_readIORef(null, null, Prelude_Prelude_HasIO$20Prelude_IO, Lib_Types__errors(top4))), ( $$sc3 ) => { switch ($$sc3.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_logMetas(Prelude_reverse(null)(Data_SortedMap_listValues(null, null, Lib_Types__metas(Lib_Types__metaCtx(top4))))), ( _10 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); default: return Node_exitFailure(null, "Compile failed"); } }))); }); } }); }))))))))); }))))))); case "Just": { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), modns, $$sc1.h1, Lib_Types__modules(top1)); const ops = Data_SortedMap_foldMap(null, null, Prelude_Prelude_Ord$20Prim_String, ( eta ) => (( eta1 ) => (Prelude_const(null, null, eta, eta1))), Lib_Types__ops(top1), Data_SortedMap_toList(null, null, Lib_Types__ctxOps($$sc1.h1))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( $$ru ) => (Lib_Types_MkTop(modules, Lib_Types__imported($$ru), Lib_Types__hints($$ru), Lib_Types__ns($$ru), Lib_Types__defs($$ru), Lib_Types__metaCtx($$ru), Lib_Types__verbose($$ru), Lib_Types__errors($$ru), ops))), ( _3 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); break; } } }))))))))); }); break; } case "Left": { const _sc$$3 = sc$$47.h2; return Node_exitFailure(null, Lib_Common_showError($$sc.h2, _sc$$3.h2)); break; } } break; } default: return Node_exitFailure(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_sc$$1.h2)))(": module name "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_sc$$1.h3)))(" doesn't match file name "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(fn)))("")); } }); break; } case "Left": { const _sc$$0 = sc$$23.h2; return Node_exitFailure(null, Lib_Common_showError($$sc.h2, _sc$$0.h2)); break; } } break; } case "Left": return Node_exitFailure(null, Lib_Common_showError($$sc.h2, sc$$19.h2)); } break; } case "Left": return Node_exitFailure(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_$$0)))(": error reading "))(fn))(": "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)($$sc.h2)))("")); } }); }); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(""); } })); const Lib_Util_REC_getBaseDir_baseDir = ( arg ) => { const _sc$$0 = arg.h4; switch (_sc$$0.tag) { case "_:<_": { const _sc$$1 = arg.h3; switch (_sc$$1.tag) { case "_:<_": { const sc$$11 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(_sc$$1.h2)(_sc$$0.h2); switch (sc$$11) { case "False": return { tag: "return", h0: Prelude_Left(null, null, "module path doesn't match directory") }; case "True": return { tag: "Lib.Util.getBaseDir.baseDir", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: _sc$$1.h1, h4: _sc$$0.h1 }; } break; } case "Lin": return { tag: "return", h0: Prelude_Left(null, null, "module path doesn't match directory") }; } break; } case "Lin": return { tag: "return", h0: Prelude_Right(null, null, Prelude_joinBy("/", Prelude__$3C$3E$3E_(null, arg.h3, Prelude_Nil(null)))) }; } }; const Lib_Util_getBaseDir_baseDir = ( _, _1, _2, _$$3, _$$4 ) => (bouncer(Lib_Util_REC_getBaseDir_baseDir, { tag: "Lib.Util.getBaseDir.baseDir", h0: _, h1: _1, h2: _2, h3: _$$3, h4: _$$4 })); const Prelude_mapFst = ( a$$0, b$$1, c$$2, f$$3, _$$4, _$$5, _$$6 ) => (Prelude_bimap(null, _$$4)(null)(null)(null)(null)(_$$5)(( eta ) => (Prelude_id(null, eta)))(_$$6)); diff --git a/test/src/Main.idr b/test/src/Main.idr deleted file mode 100644 index 6adc99c..0000000 --- a/test/src/Main.idr +++ /dev/null @@ -1,47 +0,0 @@ -module Main - -import Lib.Types -import Lib.ProcessDecl -import Lib.TopContext -import Lib.Syntax - -{- - -Expect these to throw. (need failing blocks or a white box test here) -After we get pack/lsp issues sorted with this directory - -foo : Maybe (Int × Int) -> Int -foo 1 = ? -foo _ = ? - -foo : Maybe (Int × Int) -> Int -foo (1,1) = ? -foo _ = ? - --} - -testCase : M () -testCase = do - -- need to get some defs in here - top <- get - let ctx = mkCtx top.metaCtx - let e = emptyFC - -- maybe easier to parse out this data. - processDecl (Data e "Foo" (RU e) []) - - tree <- buildTree ctx (MkProb [] (VU emptyFC)) - --ty <- check (mkCtx top.metaCtx) tm (VU fc) - pure () - - -main : IO () -main = do - -- TODO move the tests elsewhere - -- We'll need a new top, start an M, maybe push a few things in there - -- run buildTree and see what we get back - ctx <- empty - Right _ <- runEitherT $ runStateT ctx $ testCase - | Left (E fc msg) => putStrLn "Error: \{msg}" - putStrLn "done" - pure () --- A telescope is a list of binders, right? I've been leaving things as pi types to be explicit diff --git a/test/test.ipkg b/test/test.ipkg deleted file mode 100644 index b1c4674..0000000 --- a/test/test.ipkg +++ /dev/null @@ -1,47 +0,0 @@ -package newt-test -version = 0.1.0 -authors = "Steve Dunham" --- maintainers = --- license = --- brief = --- readme = --- homepage = --- sourceloc = --- bugtracker = - --- the Idris2 version required (e.g. langversion >= 0.5.1) --- langversion - --- packages to add to search path -depends = newt - --- modules to install --- modules = - --- main file (i.e. file to load at REPL) -main = Main - --- name of executable -executable = "newt-test" --- opts = -sourcedir = "src" --- builddir = --- outputdir = - --- script to run before building --- prebuild = - --- script to run after building --- postbuild = - --- script to run after building, before installing --- preinstall = - --- script to run after installing --- postinstall = - --- script to run before cleaning --- preclean = - --- script to run after cleaning --- postclean =