diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b9283bd..e1c3353 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -17,7 +17,7 @@ jobs: - name: dependencies uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 23 - name: setup run: | sudo apt-get update diff --git a/bootstrap/newt.js b/bootstrap/newt.js index 7308f5a..38a3095 100755 --- a/bootstrap/newt.js +++ b/bootstrap/newt.js @@ -426,7 +426,7 @@ const Lib_Ref2_Defs = { tag: "Defs" }; const Data_IORef_primReadIORef = (_, ref) => (w) => Prelude_MkIORes(null, ref[0], w); const Data_IORef_readIORef = ( io$$0, a$$1, _$$2, _$$3 ) => (Prelude_liftIO(null, _$$2)(null)(Data_IORef_primReadIORef(null, _$$3))); const Lib_Ref2_getRef = ( io$$0, a$$1, _$$2, l$$3, _$$4 ) => (Data_IORef_readIORef(null, null, _$$2, _$$4.h2)); -const Lib_CompileExp_arityForName = ( _$$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)("Name ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$2)))(" not in scope")); case "Just": { const _sc$$0 = sc$$4.h1; switch (_sc$$0.tag) { case "PrimFn": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_sc$$0.h1); case "PrimTCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_sc$$0.h0)); case "Fn": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_lamArity(_sc$$0.h0)); case "DCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_sc$$0.h0)); case "TCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_sc$$0.h0)); case "Axiom": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Z); } break; } } })); +const Lib_CompileExp_arityForName = ( _$$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)("Name ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$2)))(" not in scope (getting arity)")); case "Just": { const _sc$$0 = sc$$4.h1; switch (_sc$$0.tag) { case "PrimFn": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_sc$$0.h1); case "PrimTCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_sc$$0.h0)); case "Fn": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_lamArity(_sc$$0.h0)); case "DCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_sc$$0.h0)); case "TCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_sc$$0.h0)); case "Axiom": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Z); } break; } } })); const Lib_CompileExp_CLam = ( h0, h1 ) => ({ tag: "CLam", h0: h0, h1: h1 }); const Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap = ( a$$0, b$$1, _$$2, _$$3 ) => (Lib_Types_MkM(null, ( tc ) => (Prelude__$3E$3E$3D_(null, null, null, Prelude_Prelude_Monad$20Prelude_IO, _$$3.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, _$$2(_sc$$0.h3)))); break; } case "Left": return Prelude_pure(null, Prelude_Prelude_Monad$20Prelude_IO)(null)(Prelude_Left(null, null, $$sc.h2)); } })))); const Lib_Types_Prelude_Functor$20Lib_Types_M = Prelude_MkFunctor(null, ( a ) => (( b ) => (( eta ) => (( eta1 ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(null, null, eta, eta1)))))); @@ -501,7 +501,7 @@ const Prelude_ignore = ( f, a, _ ) => (Prelude_map(null, _)(null)(null)(( eta ) const Lib_LiftWhere_liftWhere = ( _ ) => (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, _), ( defs ) => (Prelude_ignore(null, null, Lib_Types_Prelude_Functor$20Lib_Types_M)(Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_LiftWhere_liftWhereFn(_, eta)))(Data_SortedMap_toList(null, null, defs)))))); const Lib_Erasure_REC_eraseSpine = ( arg ) => { switch (arg.tag) { case "return": return arg.h0; case "Lib.Erasure.eraseSpine": { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const _sc$$2 = arg.h3; switch (_sc$$2.tag) { case "Just": { const _sc$$3 = _sc$$2.h1; switch (_sc$$3.tag) { case "Pi": { const _sc$$4 = _sc$$3.h3; switch (_sc$$4.tag) { case "Many": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Erasure_erase(arg.h0, _sc$$1.h3, Prelude_Nil(null)), ( u ) => (Lib_Erasure_eraseSpine(arg.h0, Lib_Types_App(_sc$$1.h2, arg.h1, u), _sc$$0.h2, Prelude_Just(null, _sc$$3.h5)))) }; case "Zero": { const u = Lib_Types_Erased(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(_sc$$1.h3)); return { tag: "Lib.Erasure.eraseSpine", h0: arg.h0, h1: Lib_Types_App(_sc$$1.h2, arg.h1, u), h2: _sc$$0.h2, h3: Prelude_Just(null, _sc$$3.h5) }; break; } } break; } default: return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Erasure_erase(arg.h0, _sc$$1.h3, Prelude_Nil(null)), ( u ) => (Lib_Erasure_eraseSpine(arg.h0, Lib_Types_App(_sc$$1.h2, arg.h1, u), _sc$$0.h2, Prelude_Nothing(null)))) }; } break; } default: return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Erasure_erase(arg.h0, _sc$$1.h3, Prelude_Nil(null)), ( u ) => (Lib_Erasure_eraseSpine(arg.h0, Lib_Types_App(_sc$$1.h2, arg.h1, u), _sc$$0.h2, Prelude_Nothing(null)))) }; } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(arg.h1) }; } break; } } }; const Lib_Erasure_eraseSpine = ( _$$0, _$$1, _$$2, ty$$3 ) => (bouncer(Lib_Erasure_REC_eraseSpine, { tag: "Lib.Erasure.eraseSpine", h0: _$$0, h1: _$$1, h2: _$$2, h3: ty$$3 })); -const Lib_Types__modDefs = ( _$$0 ) => (_$$0.h0); +const Lib_Types__modDefs = ( _$$0 ) => (_$$0.h1); const Lib_Types__modules = ( _$$0 ) => (_$$0.h0); const Lib_Types__defs = ( _$$0 ) => (_$$0.h3); const Lib_TopContext_lookup = ( _$$0, _$$1 ) => { const sc$$4 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__defs(_$$1)); switch (sc$$4.tag) { case "Nothing": { const sc$$6 = Data_SortedMap_lookupMap$27(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), _$$0.h0, Lib_Types__modules(_$$1)); switch (sc$$6.tag) { case "Nothing": return Prelude_Nothing(null); case "Just": return Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__modDefs(sc$$6.h1)); } break; } case "Just": return Prelude_Just(null, sc$$4.h1); } }; @@ -519,8 +519,8 @@ const Lib_Types__def = ( _$$0 ) => (_$$0.h3); const Lib_Compile_getNames_getAltNames = ( _, _1, _2, _3, _4, _5, _$$6, _$$7 ) => { switch (_$$7.tag) { case "CaseLit": return Lib_Compile_getNames(_$$7.h1, _$$6); case "CaseCons": return Lib_Compile_getNames(_$$7.h2, _$$6); case "CaseDefault": return Lib_Compile_getNames(_$$7.h0, _$$6); } }; const Lib_Compile_REC_getNames = ( arg ) => { switch (arg.tag) { case "return": return arg.h0; case "Lib.Compile.getNames": { const _sc$$0 = arg.h0; switch (_sc$$0.tag) { case "LetRec": return { tag: "Lib.Compile.getNames", h0: _sc$$0.h4, h1: Lib_Compile_getNames(_sc$$0.h3, arg.h1) }; case "Let": return { tag: "Lib.Compile.getNames", h0: _sc$$0.h3, h1: Lib_Compile_getNames(_sc$$0.h2, arg.h1) }; case "Case": return { tag: "return", h0: Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_Compile_getNames_getAltNames(arg.h0, arg.h1, _sc$$0.h0, _sc$$0.h1, _sc$$0.h2, null, eta, eta1))), arg.h1, _sc$$0.h2) }; case "Pi": return { tag: "Lib.Compile.getNames", h0: _sc$$0.h5, h1: Lib_Compile_getNames(_sc$$0.h4, arg.h1) }; case "App": return { tag: "Lib.Compile.getNames", h0: _sc$$0.h2, h1: Lib_Compile_getNames(_sc$$0.h1, arg.h1) }; case "Lam": return { tag: "Lib.Compile.getNames", h0: _sc$$0.h4, h1: arg.h1 }; case "Ref": return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h1, arg.h1) }; default: return { tag: "return", h0: arg.h1 }; } break; } } }; const Lib_Compile_getNames = ( _$$0, _$$1 ) => (bouncer(Lib_Compile_REC_getNames, { tag: "Lib.Compile.getNames", h0: _$$0, h1: _$$1 })); -const Lib_Compile_getEntries = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$3 = Lib_TopContext_lookup(_$$1, top); switch (sc$$3.tag) { case "Nothing": 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, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("bad name ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))("")), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$0))); case "Just": { const _sc$$0 = sc$$3.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "PrimFn": { const acc = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _sc$$0.h1, _sc$$0.h3, _$$0); return Prelude_foldlM(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, ( eta ) => (( eta1 ) => (Lib_Compile_getEntries(eta, eta1))), acc, _sc$$1.h2); break; } case "Fn": { const sc$$11 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _sc$$0.h1, _$$0); switch (sc$$11.tag) { case "Nothing": { const acc = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _sc$$0.h1, _sc$$0.h3, _$$0); return Prelude_foldlM(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, ( eta ) => (( eta1 ) => (Lib_Compile_getEntries(eta, eta1))), acc, Lib_Compile_getNames(_sc$$1.h0, Prelude_Nil(null))); break; } case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$0); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$1, Lib_Types__def(sc$$3.h1), _$$0)); } break; } } })); -const Lib_Compile_process = ( _$$0 ) => { const wat = Lib_Common_QN(Prelude__$3A$3A_(null, "Prelude", Prelude_Nil(null)), "arrayToList"); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Compile_getEntries(Data_SortedMap_EmptyMap(null, null), _$$0), ( entries ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_newIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, entries), ( ref ) => { const foo = Lib_Ref2_MkRef(null, null, ref); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Compile_eraseEntries(Lib_Ref2_MkRef(null, null, ref)), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_LiftWhere_liftWhere(Lib_Ref2_MkRef(null, null, ref)), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, ref), ( entries1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_mapM(null, Lib_Types_Prelude_Monad$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_defToCExp(Lib_Ref2_MkRef(null, null, ref), eta)), Data_SortedMap_toList(null, null, entries1)), ( exprs ) => { const cexpMap = Data_SortedMap_foldMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, ( eta ) => (( eta1 ) => (Prelude_const(null, null, eta, eta1))), Data_SortedMap_EmptyMap(null, null), exprs); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TCO_tailCallOpt(cexpMap), ( cexpMap1 ) => { const names = Lib_Compile_sortedNames(cexpMap1, _$$0); return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Compile_cexpToDoc)(Prelude_mapMaybe(null, null, ( x ) => (Data_SortedMap_lookupMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, x, cexpMap1)), names))); }); }))))))); }))); }; +const Lib_Compile_getEntries = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$5 = Lib_TopContext_lookup(_$$1, top); switch (sc$$5.tag) { case "Nothing": 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, 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)("bad name ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1)))(" (QN "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$1.h0)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$1.h1)))(")")), ( _ ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$0))); case "Just": { const _sc$$0 = sc$$5.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "PrimFn": { const acc = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _sc$$0.h1, _sc$$0.h3, _$$0); return Prelude_foldlM(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, ( eta ) => (( eta1 ) => (Lib_Compile_getEntries(eta, eta1))), acc, _sc$$1.h2); break; } case "Fn": { const sc$$13 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _sc$$0.h1, _$$0); switch (sc$$13.tag) { case "Nothing": { const acc = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _sc$$0.h1, _sc$$0.h3, _$$0); return Prelude_foldlM(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, ( eta ) => (( eta1 ) => (Lib_Compile_getEntries(eta, eta1))), acc, Lib_Compile_getNames(_sc$$1.h0, Prelude_Nil(null))); break; } case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$0); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$1, Lib_Types__def(sc$$5.h1), _$$0)); } break; } } })); +const Lib_Compile_process = ( _$$0 ) => { const wat = Lib_Common_QN(Prelude__$3A$3A_(null, "Prelude", Prelude_Nil(null)), "arrayToList"); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Compile_getEntries(Data_SortedMap_EmptyMap(null, null), _$$0), ( entries ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_newIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, entries), ( ref ) => { const foo = Lib_Ref2_MkRef(null, null, ref); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Compile_eraseEntries(Lib_Ref2_MkRef(null, null, ref)), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_LiftWhere_liftWhere(Lib_Ref2_MkRef(null, null, ref)), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, ref), ( entries1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_mapM(null, Lib_Types_Prelude_Monad$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_defToCExp(Lib_Ref2_MkRef(null, null, ref), eta)), Data_SortedMap_toList(null, null, entries1)), ( exprs ) => { const cexpMap = Data_SortedMap_foldMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, ( eta ) => (( eta1 ) => (Prelude_const(null, null, eta, eta1))), Data_SortedMap_EmptyMap(null, null), exprs); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TCO_tailCallOpt(cexpMap), ( cexpMap1 ) => { const names = Lib_Compile_sortedNames(cexpMap1, _$$0); return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Compile_cexpToDoc)(Prelude_mapMaybe(null, null, ( x ) => (Data_SortedMap_lookupMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, x, cexpMap1)), names))); }); }))))))); }))))); }; const Lib_Types__imported = ( _$$0 ) => (_$$0.h1); const Lib_TopContext_REC_lookupRaw_go = ( arg ) => { switch (arg.tag) { case "return": return arg.h0; case "Lib.TopContext.lookupRaw.go": { const _sc$$0 = arg.h3; switch (_sc$$0.tag) { case "_::_": { const sc$$7 = Data_SortedMap_lookupMap$27(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), _sc$$0.h1, Lib_Types__modules(arg.h1)); switch (sc$$7.tag) { case "Nothing": return { tag: "Lib.TopContext.lookupRaw.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: _sc$$0.h2 }; case "Just": { const sc$$10 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, Lib_Common_QN(_sc$$0.h1, arg.h0), Lib_Types__modDefs(sc$$7.h1)); switch (sc$$10.tag) { case "Nothing": return { tag: "Lib.TopContext.lookupRaw.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: _sc$$0.h2 }; case "Just": return { tag: "return", h0: Prelude_Just(null, sc$$10.h1) }; } break; } } break; } case "Nil": return { tag: "return", h0: Prelude_Nothing(null) }; } break; } } }; const Lib_TopContext_lookupRaw_go = ( _, _1, _2, _$$3 ) => (bouncer(Lib_TopContext_REC_lookupRaw_go, { tag: "Lib.TopContext.lookupRaw.go", h0: _, h1: _1, h2: _2, h3: _$$3 })); @@ -566,9 +566,14 @@ const Lib_Common_showError = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Postp const Prelude_for_ = ( t$$0, f$$1, _$$2, appf$$3, a$$4, b$$5, _$$6, _$$7 ) => (Prelude__$3C$2A$3E_(null, appf$$3)(null)(null)(Prelude_return(null, appf$$3)(null)(( eta ) => (Prelude_const(null, null, Prelude_MkUnit, eta))))(Prelude_traverse(null, _$$2)(null)(null)(null)(appf$$3)(_$$7)(_$$6))); const Lib_Types__errors = ( _$$0 ) => (_$$0.h6); const Main_showErrors = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (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(top))), ( $$sc ) => { switch ($$sc.tag) { case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_MkUnit); default: 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, ( err ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Common_showError(_$$1, err)))), ( _ ) => (Node_exitFailure(null, "Compile failed"))); } })))); +const Lib_Types__metaCtx = ( _$$0 ) => (_$$0.h4); +const Lib_Types_MkTop = ( h0, h1, h2, h3, h4, h5, h6, h7 ) => ({ tag: "MkTop", h0: h0, h1: h1, h2: h2, h3: h3, h4: h4, h5: h5, h6: h6, h7: h7 }); +const Lib_Types__ctxOps = ( _$$0 ) => (_$$0.h3); +const Lib_Types__ops = ( _$$0 ) => (_$$0.h7); +const Lib_Types_putTop = ( _$$0 ) => (Lib_Types_MkM(null, ( _ ) => (Prelude_pure(null, Prelude_Prelude_Monad$20Prelude_IO)(null)(Prelude_Right(null, null, Prelude__$2C_(null, null, _$$0, Prelude_MkUnit)))))); +const Lib_Types_modifyTop = ( _$$0 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(_$$0(tc))))); const Lib_Types__metas = ( _$$0 ) => (_$$0.h0); const Lib_Types_info = ( _$$0, _$$1 ) => (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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("INFO at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_$$0)))(": "))(_$$1))(""))); -const Lib_Types__metaCtx = ( _$$0 ) => (_$$0.h4); const Lib_Elab_rpprint = ( _$$0, _$$1 ) => (Lib_Prettier_render(90, Lib_Types_pprint(_$$0, _$$1))); const Data_SnocList_REC_snoclen_go = ( arg ) => { switch (arg.tag) { case "return": return arg.h0; case "Data.SnocList.snoclen.go": { const _sc$$0 = arg.h3; switch (_sc$$0.tag) { case "_:<_": return { tag: "Data.SnocList.snoclen.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: _sc$$0.h1, h4: Prelude_S(arg.h4) }; case "Lin": return { tag: "return", h0: arg.h4 }; } break; } } }; const Data_SnocList_snoclen_go = ( _, _1, _2, _$$3, _$$4 ) => (bouncer(Data_SnocList_REC_snoclen_go, { tag: "Data.SnocList.snoclen.go", h0: _, h1: _1, h2: _2, h3: _$$3, h4: _$$4 })); @@ -593,7 +598,7 @@ const Lib_Types_VRef = ( h0, h1, h2 ) => ({ tag: "VRef", h0: h0, h1: h1, h2: const Lib_Types_VMeta = ( h0, h1, h2 ) => ({ tag: "VMeta", h0: h0, h1: h1, h2: h2 }); const Lib_Types_CBN = { tag: "CBN" }; const Prelude_getAt$27 = ( a$$0, _$$1, _$$2 ) => (Prelude_getAt(null, Prelude_cast(null, null, Prelude_Prelude_Cast$20Prim_Int$20Prelude_Nat)(_$$1), _$$2)); -const Lib_Types__modMetaCtx = ( _$$0 ) => (_$$0.h1); +const Lib_Types__modMetaCtx = ( _$$0 ) => (_$$0.h2); const Lib_Types_lookupMeta = ( _$$0 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => { const sc$$5 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__metas(mc)); switch (sc$$5.tag) { case "Nothing": { const sc$$7 = Data_SortedMap_lookupMap$27(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), _$$0.h0, Lib_Types__modules(top)); switch (sc$$7.tag) { case "Nothing": 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)("missing module: ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h0)))("")); case "Just": { const sc$$10 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__metas(Lib_Types__modMetaCtx(sc$$7.h1))); switch (sc$$10.tag) { case "Nothing": 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)("missing meta: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))("")); case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(sc$$10.h1); } break; } } break; } case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(sc$$5.h1); } })))); const Lib_Types_MkClosure = ( h0, h1 ) => ({ tag: "MkClosure", h0: h0, h1: h1 }); const Lib_Types_VLam = ( h0, h1, h2, h3, h4 ) => ({ tag: "VLam", h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); @@ -864,12 +869,7 @@ const Lib_ProcessDecl_dumpEnv_isVar_go = ( _, _1, _2, _$$3, _$$4, _$$5, _$$6 ) = const Lib_ProcessDecl_dumpEnv = ( _$$0 ) => (Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude__$2218_(null, null, null, Prelude_unlines, Prelude_reverse(null), eta)), Lib_ProcessDecl_dumpEnv_isVar_go(_$$0, null, null, Lib_Types_names(_$$0), 0, Prelude_reverse(null)(Prelude_zip(null, null, Lib_Types__env(_$$0), Lib_Types__types(_$$0))), Prelude_Nil(null)))); const Lib_ProcessDecl_REC_logMetas = ( arg ) => { switch (arg.tag) { case "return": return arg.h0; case "Lib.ProcessDecl.logMetas": { const _sc$$0 = arg.h0; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "OutOfScope": return { tag: "Lib.ProcessDecl.logMetas", h0: _sc$$0.h2 }; case "Solved": return { tag: "Lib.ProcessDecl.logMetas", h0: _sc$$0.h2 }; case "Unsolved": { const _sc$$2 = _sc$$1.h4; switch (_sc$$2.tag) { case "User": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_sc$$1.h2), _sc$$1.h3), ( ty$27 ) => { const names = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(Lib_Types__types(_sc$$1.h2)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_dumpEnv(_sc$$1.h2), ( env ) => { const msg = 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)("")(env))("\n -----------\n "))(Lib_Prettier_render(90, Lib_Types_pprint(names, ty$27))))(""); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_info(_sc$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("User Hole\n")(msg))("")), ( _ ) => (Lib_ProcessDecl_logMetas(_sc$$0.h2))); }); }) }; default: return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_forceMeta(_sc$$1.h3), ( ty$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_sc$$1.h2), ty$27), ( tm ) => { const msg = 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)("Unsolved meta ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$1.h1)))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_MetaKind)(_sc$$1.h4)))(" type "))(Lib_Prettier_render(90, Lib_Types_pprint(Lib_Types_names(_sc$$1.h2), tm))))(" "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(Prelude_length$27(null, _sc$$1.h5))))(" constraints"); 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$$1.h5, ( $$case ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(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)(" * (m")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$1.h1)))(" ("))(Data_String_unwords(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val))(Prelude__$3C$3E$3E_(null, $$case.h2, Prelude_Nil(null))))))(") =?= "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)($$case.h3)))("")))), ( msgs ) => { const _sc$$3 = _sc$$1.h4; switch (_sc$$3.tag) { case "AutoSolve": 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_Eval_quote(Lib_Types__lvl(_sc$$1.h2), _sc$$1.h3), ( x ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_sc$$1.h2), Lib_Types_CBN, x), ( ty ) => (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)("AUTO ---> ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(ty)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_findMatches(_sc$$1.h2, ty, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_snd(null, null, eta)))(Data_SortedMap_toList(null, null, Lib_Types__defs(top)))), ( matches ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$3A$3A_(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_show(null, Prelude_Prelude_Show$20Prim_Int)(Prelude_length$27(null, matches))))(" Solutions: "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(matches)))(""), Prelude_Nil(null))))))))))))), ( sols ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_info(_sc$$1.h0, Prelude_unlines(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(Prelude__$3A$3A_(null, msg, Prelude_Nil(null)))(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(msgs)(sols)))), ( _ ) => (Lib_ProcessDecl_logMetas(_sc$$0.h2))))); default: 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)(Prelude_Nil(null)), ( sols ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_info(_sc$$1.h0, Prelude_unlines(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(Prelude__$3A$3A_(null, msg, Prelude_Nil(null)))(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(msgs)(sols)))), ( _ ) => (Lib_ProcessDecl_logMetas(_sc$$0.h2))))); } }); }))) }; } break; } } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_MkUnit) }; } break; } } }; const Lib_ProcessDecl_logMetas = ( _$$0 ) => (bouncer(Lib_ProcessDecl_REC_logMetas, { tag: "Lib.ProcessDecl.logMetas", h0: _$$0 })); -const Lib_Types__ops = ( _$$0 ) => (_$$0.h7); -const Lib_Types_MkTop = ( h0, h1, h2, h3, h4, h5, h6, h7 ) => ({ tag: "MkTop", h0: h0, h1: h1, h2: h2, h3: h3, h4: h4, h5: h5, h6: h6, h7: h7 }); -const Lib_Types_putTop = ( _$$0 ) => (Lib_Types_MkM(null, ( _ ) => (Prelude_pure(null, Prelude_Prelude_Monad$20Prelude_IO)(null)(Prelude_Right(null, null, Prelude__$2C_(null, null, _$$0, Prelude_MkUnit)))))); -const Lib_Types_modifyTop = ( _$$0 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(_$$0(tc))))); -const Lib_Types_CheckAll = { tag: "CheckAll" }; -const Serialize_dumpObject = (_,fn,a) => (w) => { +const Serialize_dumpModFile = (fn,a) => (w) => { let fs = require('fs') try { let {EncFile} = require('./serializer') @@ -878,9 +878,9 @@ const Serialize_dumpObject = (_,fn,a) => (w) => { } catch (e) {} return Prelude_MkIORes(null, Prelude_MkUnit, w) }; -const Lib_Types__ctxOps = ( _$$0 ) => (_$$0.h2); -const Serialize_dumpModule = ( _$$0, _$$1, _$$2 ) => { const fn = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("build/")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))(".newtmod"); const defs = Data_SortedMap_listValues(null, null, Lib_Types__modDefs(_$$2)); const ops = Data_SortedMap_toList(null, null, Lib_Types__ctxOps(_$$2)); const mctx = Data_SortedMap_toList(null, null, Lib_Types__metas(Lib_Types__modMetaCtx(_$$2))); return Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Serialize_dumpObject(null, fn, Prelude__$2C_(null, null, _$$1, Prelude__$2C_(null, null, defs, Prelude__$2C_(null, null, ops, mctx))))); }; -const Lib_Types_MkModCtx = ( h0, h1, h2 ) => ({ tag: "MkModCtx", h0: h0, h1: h1, h2: h2 }); +const Lib_Types__csum = ( _$$0 ) => (_$$0.h0); +const Serialize_dumpModule = ( _$$0, _$$1, _$$2 ) => { const fn = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("build/")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))(".newtmod"); const csum = Lib_Types__csum(_$$2); const defs = Data_SortedMap_listValues(null, null, Lib_Types__modDefs(_$$2)); const ops = Data_SortedMap_toList(null, null, Lib_Types__ctxOps(_$$2)); const mctx = Data_SortedMap_toList(null, null, Lib_Types__metas(Lib_Types__modMetaCtx(_$$2))); return Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Serialize_dumpModFile(fn, Prelude__$2C_(null, null, csum, Prelude__$2C_(null, null, defs, Prelude__$2C_(null, null, ops, mctx))))); }; +const Lib_Types_MkModCtx = ( h0, h1, h2, h3 ) => ({ tag: "MkModCtx", h0: h0, h1: h1, h2: h2, h3: h3 }); const Lib_TopContext_addError = ( _$$0 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Data_IORef_modifyIORef(null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__errors(top), ( eta ) => (Prelude__$3A$3A_(null, _$$0, eta)))))); const Lib_Types_Axiom = { tag: "Axiom" }; const Lib_Types_MkEntry = ( h0, h1, h2, h3 ) => ({ tag: "MkEntry", h0: h0, h1: h1, h2: h2, h3: h3 }); @@ -962,6 +962,7 @@ const Lib_ProcessDecl_processDecl_getFields_tenv = ( _, _1, _2, _3, _4, _5, _6, const Prelude__$D7_ = ( h0, h1 ) => ({ tag: "_×_", h0: h0, h1: h1 }); const Lib_ProcessDecl_processDecl = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Record": return 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(_$$1.h4); 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)(_$$1.h1)))(""), _$$1.h3); const tcType = Lib_ProcessDecl_teleToPi(_$$1.h2, Lib_Syntax_RU(_$$1.h0)); const tail = Prelude_foldl(null, null, ( acc ) => (( bi ) => { const sc$$14 = Prelude_the(Prelude__$D7_(null, null), bi); const _sc$$0 = sc$$14.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.h0, _$$1.h1), _$$1.h2); const dcType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$1.h2), Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$15 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$0 = sc$$15.h3; return Lib_Syntax_RPi(sc$$15.h2, Lib_Types_BI(sc$$15.h2, _sc$$0.h2, Lib_Types_Explicit, Lib_Types_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.h0, _$$1.h1, tcType, Prelude__$3A$3A_(null, Lib_Syntax_TypeSig(_$$1.h0, 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(_$$1.h2), Lib_Syntax_RPi($$case.h2, Lib_Types_BI($$case.h2, "_", Lib_Types_Explicit, Lib_Types_Many), tail, _sc$$0.h3)); const autoPat = Prelude_foldl(null, null, ( acc ) => (( x ) => { const sc$$33 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$1 = sc$$33.h3; return Lib_Syntax_RApp(sc$$33.h2, acc, Lib_Syntax_RVar(sc$$33.h2, _sc$$1.h2), Lib_Types_Explicit); }), Lib_Syntax_RVar(_$$1.h0, 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$$35 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$1 = sc$$35.h2; return Lib_Syntax_RApp(_sc$$1.h0, acc, Lib_Syntax_RVar(_sc$$1.h0, _sc$$1.h1), Lib_Types_Implicit); }), Lib_Syntax_RVar($$case.h2, pname), _$$1.h2); const lhs1 = Lib_Syntax_RApp(_$$1.h0, lhs, autoPat, Lib_Types_Explicit); const pdecl = Lib_Syntax_Def($$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))))))); })))))))); }))); }))); case "Instance": return 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)(_$$1.h1))))(""))), ( _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)(_$$1.h1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1.h0), _$$1.h1, Lib_Types_VU(_$$1.h0)), ( vty ) => { const sc$$14 = Lib_Util_splitTele(vty); const env = Lib_ProcessDecl_processDecl_getFields_tenv(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, null, Prelude_length(null, sc$$14.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$$14.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$$14.h3)))(""))), ( _3 ) => { const instname = Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$14.h2)); const sigDecl = Lib_Syntax_TypeSig(_$$1.h0, Prelude__$3A$3A_(null, instname, Prelude_Nil(null)), _$$1.h1); const sc$$24 = Lib_TopContext_lookupRaw(instname, top); switch (sc$$24.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, sigDecl), ( _4 ) => { const sc$$25 = Prelude__$3C$$$3E_(null, Prelude_Prelude_Functor$20Prelude_Maybe, null, null, Lib_Elab_collectDecl, _$$1.h2); switch (sc$$25.tag) { case "Just": { const sc$$28 = Lib_Util_funArgs(sc$$14.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": { const sc$$35 = Lib_TopContext_lookup(_sc$$0.h1, top); switch (sc$$35.tag) { case "Just": { const _sc$$1 = sc$$35.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), Lib_Types_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$$67 = Lib_Util_funArgs(sc$$14.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$$67.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, Lib_Types_CBN, eta)))(sc$$67.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_processDecl_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, null, null, null, $$sc, args$27), ( appty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl_getFields(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, 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.tag) { case "Explicit": { const ty$27 = Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$86 = Prelude_the(Lib_Util_Binder, x); return Lib_Types_Pi(sc$$86.h0, sc$$86.h1, sc$$86.h2, sc$$86.h3, sc$$86.h4, acc); }), $$case.h4, sc$$14.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$$86 = Prelude_find(null, ( x ) => { const sc$$87 = Prelude_the(Lib_Syntax_Decl, x); switch (sc$$87.tag) { case "Def": return Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(sc$$87.h1)($$case.h1); default: return Prelude_False; } }, sc$$25.h1); switch (sc$$86.tag) { case "Just": { const _sc$$8 = sc$$86.h1; switch (_sc$$8.tag) { case "Def": 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), ( _8 ) => { const decl = Lib_Syntax_Def(_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.h0, 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.h0, 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_Def(_$$1.h0, instname, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, Lib_Syntax_RVar(_$$1.h0, instname), Lib_ProcessDecl_processDecl_getFields_tenv_mkRHS(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, null, null, instname, conTele, Lib_Syntax_RVar(_$$1.h0, _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$$14.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)(Prelude_MkUnit), ( _4 ) => { const sc$$25 = Prelude__$3C$$$3E_(null, Prelude_Prelude_Functor$20Prelude_Maybe, null, null, Lib_Elab_collectDecl, _$$1.h2); switch (sc$$25.tag) { case "Just": { const sc$$28 = Lib_Util_funArgs(sc$$14.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": { const sc$$35 = Lib_TopContext_lookup(_sc$$0.h1, top); switch (sc$$35.tag) { case "Just": { const _sc$$1 = sc$$35.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), Lib_Types_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$$67 = Lib_Util_funArgs(sc$$14.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$$67.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, Lib_Types_CBN, eta)))(sc$$67.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_processDecl_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, null, null, null, $$sc, args$27), ( appty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl_getFields(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, 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.tag) { case "Explicit": { const ty$27 = Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$86 = Prelude_the(Lib_Util_Binder, x); return Lib_Types_Pi(sc$$86.h0, sc$$86.h1, sc$$86.h2, sc$$86.h3, sc$$86.h4, acc); }), $$case.h4, sc$$14.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$$86 = Prelude_find(null, ( x ) => { const sc$$87 = Prelude_the(Lib_Syntax_Decl, x); switch (sc$$87.tag) { case "Def": return Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(sc$$87.h1)($$case.h1); default: return Prelude_False; } }, sc$$25.h1); switch (sc$$86.tag) { case "Just": { const _sc$$8 = sc$$86.h1; switch (_sc$$8.tag) { case "Def": 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), ( _8 ) => { const decl = Lib_Syntax_Def(_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.h0, 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.h0, 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_Def(_$$1.h0, instname, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, Lib_Syntax_RVar(_$$1.h0, instname), Lib_ProcessDecl_processDecl_getFields_tenv_mkRHS(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, null, null, instname, conTele, Lib_Syntax_RVar(_$$1.h0, _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$$14.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 "Class": return 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)("Class ")(_$$1.h1))(""))), ( _1 ) => { const fields = Lib_ProcessDecl_getSigs(_$$1.h3); const dcName = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Mk")(_$$1.h1))(""); const tcType = Lib_ProcessDecl_teleToPi(_$$1.h2, Lib_Syntax_RU(_$$1.h0)); const tail = Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processDecl_makeLHS_mkAutoApp_mkPi_mkApp(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, null, null, null, null, eta, eta1))), Lib_Syntax_RVar(_$$1.h0, _$$1.h1), _$$1.h2); const dcType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$1.h2), Prelude_foldr(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processDecl_makeLHS_mkAutoApp_mkPi(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, null, null, null, eta, eta1))), 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.h0, _$$1.h1, tcType, Prelude__$3A$3A_(null, Lib_Syntax_TypeSig(_$$1.h0, 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(_$$1.h2), Lib_Syntax_RPi($$case.h2, Lib_Types_BI($$case.h2, "_", Lib_Types_Auto, Lib_Types_Many), tail, _sc$$0.h3)); const autoPat = Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processDecl_makeLHS_mkAutoApp(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, null, null, eta, eta1))), Lib_Syntax_RVar(_$$1.h0, dcName), fields); const lhs = Lib_ProcessDecl_processDecl_makeLHS(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, null, Lib_Syntax_RVar($$case.h2, _sc$$0.h2), _$$1.h2); const lhs1 = Lib_Syntax_RApp(_$$1.h0, lhs, autoPat, Lib_Types_Auto); const decl1 = Lib_Syntax_Def($$case.h2, _sc$$0.h2, 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)("")(_sc$$0.h2))(" : "))(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)(decl1))))(""))), ( _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, _sc$$0.h2, Prelude_Nil(null)), funType)), ( _9 ) => (Lib_ProcessDecl_processDecl(_$$0, decl1))))))); })))))))); }))); }))); case "PMixFix": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_MkUnit); case "PFunc": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1.h0), _$$1.h3, Lib_Types_VU(_$$1.h0)), ( ty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_nf(Prelude_Nil(null), ty), ( ty$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => (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)("pfunc ")(_$$1.h1))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), ty$27))))(" = "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$1.h4)))(""))), ( _ ) => (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, ( name ) => { const sc$$12 = Lib_TopContext_lookupRaw(name, top); switch (sc$$12.tag) { case "Nothing": 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)("")(name))(" not in scope")); case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types__name(sc$$12.h1)); } }), ( used$27 ) => { const arity = Lib_Util_piArity(ty$27); return Lib_TopContext_setDef(Lib_Common_QN(_$$0, _$$1.h1), _$$1.h0, ty$27, Lib_Types_PrimFn(_$$1.h4, arity, used$27)); }))))))))); case "PType": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1.h0), Prelude_maybe(null, null, Lib_Syntax_RU(_$$1.h0), ( eta ) => (Prelude_id(null, eta)), _$$1.h2), Lib_Types_VU(_$$1.h0)), ( ty$27 ) => { const arity = Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(Lib_Util_piArity(ty$27)); return Lib_TopContext_setDef(Lib_Common_QN(_$$0, _$$1.h1), _$$1.h0, ty$27, Lib_Types_PrimTCon(arity)); }))); case "ShortData": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl_mkPi_getArgs(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, null, _$$1.h1, Prelude_Nil(null)), ( $$sc ) => { const ty = Prelude_foldr(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processDecl_mkPi(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, eta, eta1))), Lib_Syntax_RU(_$$1.h0), $$sc.h3); 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 ) => (Lib_ProcessDecl_processDecl_mkPi_getArgs_mkDecl(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, null, null, null, $$sc.h3, Prelude_Nil(null), eta)))(_$$1.h2), ( cons ) => { const dataDecl = Lib_Syntax_Data(_$$1.h0, $$sc.h2, ty, cons); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("SHORTDATA")), ( _ ) => (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)("")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(dataDecl))))(""))), ( _1 ) => (Lib_ProcessDecl_processDecl(_$$0, dataDecl))))); }); }); case "Data": return 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)("Data ")(_$$1.h1))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1.h0), _$$1.h2, Lib_Types_VU(_$$1.h0)), ( tyty ) => { const sc$$13 = Lib_TopContext_lookupRaw(_$$1.h1, top); switch (sc$$13.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_setDef(Lib_Common_QN(_$$0, _$$1.h1), _$$1.h0, tyty, Lib_Types_Axiom), ( _2 ) => (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.h3, ( x ) => { switch (x.tag) { case "TypeSig": return 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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check dcon ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(x.h2)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(x.h0), x.h2, Lib_Types_VU(x.h0)), ( dty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (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)("dty ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" is "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), dty))))(""))), ( _4 ) => { const sc$$22 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processDecl_binderName(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, null, eta)))(sc$$22.h3)); const sc$$28 = Lib_Util_funArgs(sc$$22.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": 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__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$0.h1, Lib_Common_QN(_$$0, _$$1.h1)), ( _5 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$22.h2), 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)("Constructor codomain is ")(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$22.h2))))(" rather than "))(_$$1.h1))("")))), ( _5 ) => (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, x.h1, ( nm$27 ) => (Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), x.h0, dty, Lib_Types_DCon(Lib_Elab_getArity(dty), _sc$$0.h1)))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_Common_QN(_$$0, eta)))(x.h1)))))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$28.h2), 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)("expected ")(_$$1.h1))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$28.h2))))("")); } }))))); default: return Lib_Types_throwError(null, Lib_Common_E(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(x), "expected constructor declaration")); } }), ( cnames ) => (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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("setDef ")(_$$1.h1))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, cnames))))(""))), ( _3 ) => { const arity = Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(Lib_Util_piArity(tyty)); return Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$1.h1), _$$1.h0, tyty, Lib_Types_TCon(arity, Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, cnames))); }))))); case "Just": { const _sc$$0 = sc$$13.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "Axiom": 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_Eval_eval(Prelude_Nil(null), Lib_Types_CBN, tyty), ( tyty$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), Lib_Types_CBN, _sc$$0.h2), ( type$27 ) => (Lib_Elab_unifyCatch(_$$1.h0, Lib_Types_mkCtx(_$$1.h0), tyty$27, type$27))))), ( _2 ) => (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.h3, ( x ) => { switch (x.tag) { case "TypeSig": return 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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check dcon ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(x.h2)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(x.h0), x.h2, Lib_Types_VU(x.h0)), ( dty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (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)("dty ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" is "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), dty))))(""))), ( _4 ) => { const sc$$22 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processDecl_binderName(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, null, eta)))(sc$$22.h3)); const sc$$28 = Lib_Util_funArgs(sc$$22.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": 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__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$0.h1, Lib_Common_QN(_$$0, _$$1.h1)), ( _5 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$22.h2), 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)("Constructor codomain is ")(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$22.h2))))(" rather than "))(_$$1.h1))("")))), ( _5 ) => (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, x.h1, ( nm$27 ) => (Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), x.h0, dty, Lib_Types_DCon(Lib_Elab_getArity(dty), _sc$$0.h1)))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_Common_QN(_$$0, eta)))(x.h1)))))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$28.h2), 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)("expected ")(_$$1.h1))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$28.h2))))("")); } }))))); default: return Lib_Types_throwError(null, Lib_Common_E(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(x), "expected constructor declaration")); } }), ( cnames ) => (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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("setDef ")(_$$1.h1))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, cnames))))(""))), ( _3 ) => { const arity = Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(Lib_Util_piArity(tyty)); return Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$1.h1), _$$1.h0, tyty, Lib_Types_TCon(arity, Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, cnames))); }))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, 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)(_$$1.h1)))(" already declared")), ( _2 ) => (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.h3, ( x ) => { switch (x.tag) { case "TypeSig": return 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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check dcon ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(x.h2)))(""))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(x.h0), x.h2, Lib_Types_VU(x.h0)), ( dty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _4 ) => (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)("dty ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(x.h1)))(" is "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), dty))))(""))), ( _4 ) => { const sc$$22 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processDecl_binderName(_$$0, _$$1, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, null, eta)))(sc$$22.h3)); const sc$$28 = Lib_Util_funArgs(sc$$22.h2); const _sc$$0 = sc$$28.h2; switch (_sc$$0.tag) { case "Ref": 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__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$0.h1, Lib_Common_QN(_$$0, _$$1.h1)), ( _5 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$22.h2), 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)("Constructor codomain is ")(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$22.h2))))(" rather than "))(_$$1.h1))("")))), ( _5 ) => (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, x.h1, ( nm$27 ) => (Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), x.h0, dty, Lib_Types_DCon(Lib_Elab_getArity(dty), _sc$$0.h1)))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_Common_QN(_$$0, eta)))(x.h1)))))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$28.h2), 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)("expected ")(_$$1.h1))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$28.h2))))("")); } }))))); default: return Lib_Types_throwError(null, Lib_Common_E(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(x), "expected constructor declaration")); } }), ( cnames ) => (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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("setDef ")(_$$1.h1))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, cnames))))(""))), ( _3 ) => { const arity = Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(Lib_Util_piArity(tyty)); return Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$1.h1), _$$1.h0, tyty, Lib_Types_TCon(arity, Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, cnames))); }))))); } break; } } }))))))))); case "DCheck": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("----- DCheck")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_info(_$$1.h0, 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)("check ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$1.h1)))(" at "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$1.h2)))("")), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1.h0), _$$1.h2, Lib_Types_VU(_$$1.h0)), ( ty$27 ) => (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)(" got type ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), ty$27))))("")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), Lib_Types_CBN, ty$27), ( vty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1.h0), _$$1.h1, vty), ( res ) => (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)(" got ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), res))))("")), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_nf(Prelude_Nil(null), res), ( norm ) => (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)(" NF ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), norm))))("")), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_nfv(Prelude_Nil(null), res), ( norm1 ) => (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)(" NFV ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), norm1))))("")))))))))))))))))))))))); case "Def": return 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)("Def ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$1.h1)))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => { const sc$$9 = Lib_TopContext_lookupRaw(_$$1.h1, top); switch (sc$$9.tag) { case "Nothing": return Lib_Types_throwError(null, Lib_Common_E(_$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("No declaration for ")(_$$1.h1))(""))); case "Just": { const _sc$$0 = sc$$9.h1; const _sc$$1 = _sc$$0.h3; switch (_sc$$1.tag) { case "Axiom": 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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("check ")(_$$1.h1))(" at "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$0.h2))))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), Lib_Types_CBN, _sc$$0.h2), ( vty ) => (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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(_$$1.h1))(" vty is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(vty)))(""))), ( _3 ) => (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)(Lib_Elab_makeClause)(_$$1.h2), ( clauses$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildTree(Lib_Types_mkCtx(_sc$$0.h0), Lib_Elab_MkProb(clauses$27, vty)), ( tm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_solveAutos, ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_zonk(top, 0, Prelude_Nil(null), tm), ( tm$27 ) => (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)("NF\n")(Lib_Prettier_render(80, Lib_Types_pprint(Prelude_Nil(null), tm$27))))(""))), ( _5 ) => (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)(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)("Add def ")(_$$1.h1))(" "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), tm$27))))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$0.h2))))(""))), ( _6 ) => (Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$1.h1), _sc$$0.h0, _sc$$0.h2, Lib_Types_Fn(tm$27)))))))))))))))))))))); default: return Lib_Types_throwError(null, Lib_Common_E(_$$1.h0, 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)("")(_$$1.h1))(" already defined at "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Types__fc(sc$$9.h1))))(""))); } break; } } }))))))); case "TypeSig": return 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_getTop, ( top ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top)), ( mc ) => (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.h1, ( nm ) => { const sc$$9 = Lib_TopContext_lookupRaw(nm, top); switch (sc$$9.tag) { case "Nothing": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_MkUnit); case "Just": 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__$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)(nm)))(" is already defined at "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Types__fc(sc$$9.h1))))("")); } }), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1.h0), _$$1.h2, Lib_Types_VU(_$$1.h0)), ( ty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_zonk(top, 0, Prelude_Nil(null), ty), ( ty1 ) => (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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TypeSig ")(Data_String_unwords(_$$1.h1)))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), ty1))))(""))), ( _2 ) => (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, _$$1.h1, ( nm ) => (Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm), _$$1.h0, ty1, Lib_Types_Axiom)))))))))))))))))); } }; 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)(Prelude_MkUnit); } })); +const Lib_Types_CheckAll = { tag: "CheckAll" }; const Lib_Token__bounds = ( ty$$0, _$$1 ) => (_$$1.h2); const Lib_Token_Prelude_Eq$20Lib_Token_Bounds$2C_$3D$3D_ = ( _$$0, _$$1 ) => (Prelude__$26$26_(Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_$$0.h0)(_$$1.h0), Prelude__$26$26_(Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_$$0.h1)(_$$1.h1), Prelude__$26$26_(Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_$$0.h2)(_$$1.h2), Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_$$0.h3)(_$$1.h3))))); const Lib_Token_Prelude_Eq$20Lib_Token_Bounds = Prelude_MkEq(null, ( eta ) => (( eta1 ) => (Lib_Token_Prelude_Eq$20Lib_Token_Bounds$2C_$3D$3D_(eta, eta1)))); @@ -1146,6 +1147,30 @@ const Lib_Parser_parseDecl = Prelude__$3C$7C$3E_(null, Lib_Parser_Impl_Prelude_A const Lib_Parser_Impl_partialParse = ( a$$0, _$$1, _$$2, _$$3, _$$4 ) => { const sc$$5 = Lib_Parser_Impl_runP(null, _$$2)(_$$4)(Prelude_False)(_$$3)(Lib_Common_MkFC(_$$1, Prelude__$2C_(null, null, 0, 0))); switch (sc$$5.tag) { case "Fail": return Prelude_Left(null, null, Prelude__$2C_(null, null, sc$$5.h2, sc$$5.h3)); case "OK": return Prelude_Right(null, null, Prelude__$2C_(null, null, sc$$5.h1, Prelude__$2C_(null, null, sc$$5.h4, sc$$5.h2))); } }; const Main_REC_parseDecls = ( arg ) => { switch (arg.tag) { case "return": return arg.h0; case "Main.parseDecls": { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "_::_": { const sc$$8 = Lib_Parser_Impl_partialParse(null, arg.h0, Lib_Parser_Impl_sameLevel(null, Lib_Parser_parseDecl), arg.h1, arg.h2); switch (sc$$8.tag) { case "Right": { const _sc$$1 = sc$$8.h2; const _sc$$2 = _sc$$1.h3; return { tag: "Main.parseDecls", h0: arg.h0, h1: _sc$$2.h2, h2: _sc$$2.h3, h3: Prelude__$3A$3C_(null, arg.h3, _sc$$1.h2) }; break; } case "Left": { const _sc$$1 = sc$$8.h2; return { tag: "return", h0: 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("", _sc$$1.h2)), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_addError(_sc$$1.h2), ( _1 ) => (Main_parseDecls(arg.h0, arg.h1, Main_parseDecls_recover(arg.h0, arg.h1, arg.h2, arg.h3, _sc$$0.h0, _sc$$0.h1, _sc$$0.h2, null, _sc$$1.h3), arg.h3))))) }; break; } } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, Prelude__$3C$3E$3E_(null, arg.h3, Prelude_Nil(null)), arg.h1)) }; } break; } } }; const Main_parseDecls = ( _$$0, _$$1, _$$2, _$$3 ) => (bouncer(Main_REC_parseDecls, { tag: "Main.parseDecls", h0: _$$0, h1: _$$1, h2: _$$2, h3: _$$3 })); +const Data_SortedMap_mapFromList_go = ( _, _1, _2, _3, _4, _5, _$$6, _$$7 ) => (Data_SortedMap_updateMap(null, null, _2, _$$7.h2, _$$7.h3, _$$6)); +const Data_SortedMap_mapFromList = ( k$$0, v$$1, _$$2, _$$3, _$$4 ) => (Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Data_SortedMap_mapFromList_go(k$$0, v$$1, _$$2, _$$3, _$$4, null, eta, eta1))), Data_SortedMap_EmptyMap(null, null), _$$4)); +const Serialize_readModFile = (fn) => (w) => { + let fs = require('fs') + try { + let {DecFile} = require('./serializer') + let data = fs.readFileSync(fn) + let dec = DecFile.decode(data) + return Prelude_MkIORes(null, Prelude_Just(null, dec), w) + } catch (e) { + return Prelude_MkIORes(null, Prelude_Nothing, w) + } +}; +const Serialize_loadModule = ( _$$0, _$$1 ) => { const fn = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("build/")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))(".newtmod"); 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_readModFile(fn)), ( $$sc ) => { switch ($$sc.tag) { case "Just": { const _sc$$0 = $$sc.h1; const _sc$$1 = _sc$$0.h3; const _sc$$2 = _sc$$1.h3; const ops = Data_SortedMap_mapFromList(null, null, Prelude_Prelude_Ord$20Prim_String, Prelude_Prelude_Eq$20Prim_String, _sc$$2.h2); const defs = Data_SortedMap_mapFromList(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, Lib_Common_Prelude_Eq$20Lib_Common_QName, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( entry ) => (Prelude__$2C_(null, null, Lib_Types__name(entry), entry)))(_sc$$1.h2)); const mctx = Lib_Types_MC(Data_SortedMap_mapFromList(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$2.h3), 0, Lib_Types_NoCheck); const sc$$22 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(_sc$$0.h2)(_$$1); switch (sc$$22.tag) { case "False": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); case "True": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, Lib_Types_MkModCtx(_sc$$0.h2, defs, mctx, ops))); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }); }; +const Serialize_checksum = (a) => (w) => { + const arr = new TextEncoder().encode(a); + // djb2 hash + let val = 5381 + for (let i = 0; i < arr.length; i++) { + val = ((val * 33) + arr[i]) | 0 + } + return Prelude_MkIORes(null, ""+val, w); +}; +const Main_moduleHash = ( _$$0, _$$1 ) => (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(_$$0)), ( srcHash ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const mods = Prelude_mapMaybe(null, null, ( x ) => (Data_SortedMap_lookupMap$27(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), x, Lib_Types__modules(top))), _$$1); const modHashes = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__csum(x)))(mods); return Prelude_liftIO(null, Lib_Types_Prelude_HasIO$20Lib_Types_M)(null)(Serialize_checksum(Prelude_fastConcat(Prelude__$3A$3A_(null, srcHash, modHashes)))); })))); const Main_primNS = Prelude__$3A$3A_(null, "Prim", Prelude_Nil(null)); const Data_List1__$3A$3A$3A_ = ( h0, h1, h2 ) => ({ tag: "_:::_", h0: h0, h1: h1, h2: h2 }); const Data_List1_split1 = ( _$$0, _$$1 ) => { const sc$$2 = Prelude_split(_$$0, _$$1); switch (sc$$2.tag) { case "_::_": return Data_List1__$3A$3A$3A_(null, sc$$2.h1, sc$$2.h2); case "Nil": return Data_List1__$3A$3A$3A_(null, _$$0, Prelude_Nil(null)); } }; @@ -1188,19 +1213,19 @@ const Node_readFile = (fn) => (w) => { } return Prelude_MkIORes(null, result, w) }; -const Lib_Types_emptyModCtx = Lib_Types_MkModCtx(Data_SortedMap_EmptyMap(null, null), Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), 0, Lib_Types_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(( top1 ) => (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(top1)), Lib_Types__imported(top1), Lib_Types__ns(top1), Lib_Types__defs(top1), Lib_Types__metaCtx(top1), Lib_Types__verbose(top1), Lib_Types__errors(top1), Lib_Types__ops(top1)))), ( _ ) => { 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.tag) { 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_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_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, ( top1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_parseDecls(fn, Lib_Types__ops(top1), _sc$$4.h3, Prelude_Lin(null)), ( $$sc1 ) => (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, Data_IORef_newIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), 0, Lib_Types_CheckAll)), ( freshMC ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top3 ) => (Lib_Types_MkTop(Lib_Types__modules(top3), imported1, modns, Data_SortedMap_EmptyMap(null, null), freshMC, Lib_Types__verbose(top3), Lib_Types__errors(top3), $$sc1.h3))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _5 ) => ("process Decls")), ( _5 ) => (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($$sc1.h2)), ( _6 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top3)), ( mc ) => { const mod = Lib_Types_MkModCtx(Lib_Types__defs(top3), mc, Lib_Types__ops(top3)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Serialize_dumpModule(_$$3, $$sc.h2, mod), ( _7 ) => { 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(top3)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_newIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), 0, Lib_Types_CheckAll)), ( freshMC1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top4 ) => (Lib_Types_MkTop(modules, Lib_Types__imported(top4), Lib_Types__ns(top4), Lib_Types__defs(top4), Lib_Types__metaCtx(top4), Lib_Types__verbose(top4), Lib_Types__errors(top4), Lib_Types__ops(top4)))), ( _8 ) => (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(top3))), ( $$sc2 ) => { switch ($$sc2.tag) { case "Nil": { const sc$$85 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Eq$20Prim_String))(_$$2)(Prelude_Nil(null)); switch (sc$$85.tag) { 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)(Prelude_MkUnit), ( _9 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); case "True": 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(mc)))), ( _9 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); } break; } default: 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, $$sc2, ( err ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Common_showError($$sc.h2, err)))), ( _9 ) => (Node_exitFailure(null, "Compile failed"))); } }))))); }); }))))))))))))))))))))); }); 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_Types_emptyModCtx = ( _$$0 ) => (Lib_Types_MkModCtx(_$$0, Data_SortedMap_EmptyMap(null, null), Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), 0, Lib_Types_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(( top1 ) => (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(top1)), Lib_Types__imported(top1), Lib_Types__ns(top1), Lib_Types__defs(top1), Lib_Types__metaCtx(top1), Lib_Types__verbose(top1), Lib_Types__errors(top1), Lib_Types__ops(top1)))), ( _ ) => { 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.tag) { 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 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_newIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), 0, Lib_Types_CheckAll)), ( freshMC ) => (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, 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, Lib_Types_log(1, ( _5 ) => ("process Decls")), ( _5 ) => (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)), ( _6 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_readIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top4)), ( mc ) => { const mod = Lib_Types_MkModCtx(csum, Lib_Types__defs(top4), mc, Lib_Types__ops(top4)); const sc$$84 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Eq$20Prim_String))(_$$2)(Prelude_Nil(null)); switch (sc$$84.tag) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Serialize_dumpModule(_$$3, $$sc.h2, mod), ( _7 ) => { 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(( top5 ) => (Lib_Types_MkTop(modules, Lib_Types__imported(top5), Lib_Types__ns(top5), Lib_Types__defs(top5), Lib_Types__metaCtx(top5), Lib_Types__verbose(top5), Lib_Types__errors(top5), Lib_Types__ops(top5)))), ( _8 ) => (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": { const sc$$90 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Eq$20Prim_String))(_$$2)(Prelude_Nil(null)); switch (sc$$90.tag) { 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)(Prelude_MkUnit), ( _9 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); case "True": 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(mc)))), ( _9 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); } break; } default: 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, $$sc3, ( err ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Common_showError($$sc.h2, err)))), ( _9 ) => (Node_exitFailure(null, "Compile failed"))); } }))); }); case "True": 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)(Prelude_MkUnit), ( _7 ) => { 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(( top5 ) => (Lib_Types_MkTop(modules, Lib_Types__imported(top5), Lib_Types__ns(top5), Lib_Types__defs(top5), Lib_Types__metaCtx(top5), Lib_Types__verbose(top5), Lib_Types__errors(top5), Lib_Types__ops(top5)))), ( _8 ) => (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": { const sc$$90 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Eq$20Prim_String))(_$$2)(Prelude_Nil(null)); switch (sc$$90.tag) { 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)(Prelude_MkUnit), ( _9 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); case "True": 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(mc)))), ( _9 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc.h2))); } break; } default: 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, $$sc3, ( err ) => (Prelude_putStrLn(null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Common_showError($$sc.h2, err)))), ( _9 ) => (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)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top2 ) => { const ops = Data_SortedMap_foldMap(null, null, Prelude_Prelude_Ord$20Prim_String, ( eta ) => (( eta1 ) => (Prelude_const(null, null, eta, eta1))), Lib_Types__ops(top2), Data_SortedMap_toList(null, null, Lib_Types__ctxOps($$sc1.h1))); return Lib_Types_MkTop(modules, Lib_Types__imported(top2), Lib_Types__ns(top2), Lib_Types__defs(top2), Lib_Types__metaCtx(top2), Lib_Types__verbose(top2), Lib_Types__errors(top2), 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 ) => { switch (arg.tag) { case "return": return arg.h0; case "Lib.Util.getBaseDir.baseDir": { 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.tag) { 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)))) }; } break; } } }; 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)); const Data_List1_splitFileName = ( _$$0 ) => { const sc$$1 = Data_List1_split1(_$$0, "."); const _sc$$0 = sc$$1.h2; switch (_sc$$0.tag) { case "Nil": return Prelude__$2C_(null, null, sc$$1.h1, ""); default: return Prelude_mapFst(null, null, null, null, Prelude_Prelude_Bifunctor$20Prelude__$D7_, ( eta ) => (Prelude_joinBy(".", eta)), Data_List1_unsnoc(null, sc$$1)); } }; const Lib_Util_getBaseDir = ( _$$0, _$$1 ) => { const sc$$3 = Data_List1_unsnoc(null, Data_List1_split1(_$$1, ".")); const parts = Data_List1_split1(_$$0, "/"); const sc$$9 = Data_List1_unsnoc(null, parts); const sc$$14 = Data_List1_splitFileName(sc$$9.h3); const parts1 = Data_List1_split1(_$$0, "/"); const sc$$20 = Data_List1_unsnoc(null, parts1); const sc$$25 = Data_List1_unsnoc(null, Data_List1_split1(_$$1, ".")); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_unless(null, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(sc$$25.h3)(sc$$14.h2), ( _ ) => (Lib_Types_error(null, Lib_Common_MkFC(_$$0, Prelude__$2C_(null, null, 0, 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)("module name ")(sc$$25.h3))(" doesn't match "))(sc$$14.h2))("")))), ( _ ) => { const sc$$31 = Lib_Util_getBaseDir_baseDir(_$$0, _$$1, null, Prelude__$3C$3E$3C_(null, Prelude_Lin(null), sc$$20.h2), Prelude__$3C$3E$3C_(null, Prelude_Lin(null), sc$$25.h2)); switch (sc$$31.tag) { case "Right": { let base; const sc$$35 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(sc$$31.h2)(""); switch (sc$$35.tag) { case "False": { base = sc$$31.h2; break; } case "True": { base = "."; break; } } return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, base, Lib_Common_QN(sc$$25.h2, sc$$25.h3))); break; } case "Left": return Lib_Types_error(null, Lib_Common_MkFC(_$$0, Prelude__$2C_(null, null, 0, 0)), sc$$31.h2); } }); }; -const Main_processFile = ( _$$0 ) => (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)("*** Process ")(_$$0))("")), ( _ ) => { const parts = Data_List1_split1(_$$0, "/"); const sc$$3 = Data_List1_unsnoc(null, parts); let dir; const sc$$8 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Eq$20Prim_String))(sc$$3.h2)(Prelude_Nil(null)); switch (sc$$8.tag) { case "False": { dir = Prelude_joinBy("/", sc$$3.h2); break; } case "True": { dir = "."; break; } } const sc$$9 = Data_List1_splitFileName(sc$$3.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)(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, Prelude_Prelude_Show$20Prim_String)(dir)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(sc$$9.h2)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(sc$$9.h3)))(""))), ( _1 ) => (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(_$$0)), ( $$sc ) => { switch ($$sc.tag) { case "Right": { const sc$$20 = Lib_Tokenizer_tokenise(_$$0, $$sc.h2); switch (sc$$20.tag) { case "Right": { const sc$$24 = Lib_Parser_Impl_partialParse(null, _$$0, Lib_Parser_parseModHeader, Data_SortedMap_EmptyMap(null, null), sc$$20.h2); switch (sc$$24.tag) { case "Right": { const _sc$$0 = sc$$24.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_Util_getBaseDir(_$$0, _sc$$1.h3), ( $$sc1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(Main_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "Int", Prelude_Nothing(null))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(Main_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "String", Prelude_Nothing(null))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(Main_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "Char", Prelude_Nothing(null))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), Main_primNS, Lib_Types_MkModCtx(Lib_Types__defs(top), Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), 0, Lib_Types_CheckAll), Lib_Types__ops(top)), Lib_Types__modules(top)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top1 ) => (Lib_Types_MkTop(modules, Prelude__$3A$3A_(null, Main_primNS, Prelude_Nil(null)), Prelude_Nil(null), Data_SortedMap_EmptyMap(null, null), Lib_Types__metaCtx(top1), Lib_Types__verbose(top1), Lib_Types__errors(top1), Lib_Types__ops(top1)))), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_processModule(Lib_Common_emptyFC, $$sc1.h2, Prelude_Nil(null), $$sc1.h3), ( src ) => (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, Main_showErrors(_$$0, src), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_MkUnit))))))))); }))))))))); break; } case "Left": { const _sc$$0 = sc$$24.h2; return Lib_Types_throwError(null, _sc$$0.h2); break; } } break; } case "Left": return Lib_Types_throwError(null, sc$$20.h2); } break; } case "Left": return Lib_Types_error(null, Lib_Common_MkFC(_$$0, Prelude__$2C_(null, null, 0, 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)("error reading ")(_$$0))(": "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)($$sc.h2)))("")); } }))); })); +const Main_processFile = ( _$$0 ) => (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)("*** Process ")(_$$0))("")), ( _ ) => { const parts = Data_List1_split1(_$$0, "/"); const sc$$3 = Data_List1_unsnoc(null, parts); let dir; const sc$$8 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Eq$20Prim_String))(sc$$3.h2)(Prelude_Nil(null)); switch (sc$$8.tag) { case "False": { dir = Prelude_joinBy("/", sc$$3.h2); break; } case "True": { dir = "."; break; } } const sc$$9 = Data_List1_splitFileName(sc$$3.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)(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, Prelude_Prelude_Show$20Prim_String)(dir)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(sc$$9.h2)))(" "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(sc$$9.h3)))(""))), ( _1 ) => (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(_$$0)), ( $$sc ) => { switch ($$sc.tag) { case "Right": { const sc$$20 = Lib_Tokenizer_tokenise(_$$0, $$sc.h2); switch (sc$$20.tag) { case "Right": { const sc$$24 = Lib_Parser_Impl_partialParse(null, _$$0, Lib_Parser_parseModHeader, Data_SortedMap_EmptyMap(null, null), sc$$20.h2); switch (sc$$24.tag) { case "Right": { const _sc$$0 = sc$$24.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_Util_getBaseDir(_$$0, _sc$$1.h3), ( $$sc1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(Main_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "Int", Prelude_Nothing(null))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(Main_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "String", Prelude_Nothing(null))), ( _3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(Main_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "Char", Prelude_Nothing(null))), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const modules = Data_SortedMap_updateMap(null, null, Prelude_Prelude_Ord$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Ord$20Prim_String), Main_primNS, Lib_Types_MkModCtx("", Lib_Types__defs(top), Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), 0, Lib_Types_CheckAll), Lib_Types__ops(top)), Lib_Types__modules(top)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top1 ) => (Lib_Types_MkTop(modules, Prelude__$3A$3A_(null, Main_primNS, Prelude_Nil(null)), Prelude_Nil(null), Data_SortedMap_EmptyMap(null, null), Lib_Types__metaCtx(top1), Lib_Types__verbose(top1), Lib_Types__errors(top1), Lib_Types__ops(top1)))), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_processModule(Lib_Common_emptyFC, $$sc1.h2, Prelude_Nil(null), $$sc1.h3), ( src ) => (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, Main_showErrors(_$$0, src), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_MkUnit))))))))); }))))))))); break; } case "Left": { const _sc$$0 = sc$$24.h2; return Lib_Types_throwError(null, _sc$$0.h2); break; } } break; } case "Left": return Lib_Types_throwError(null, sc$$20.h2); } break; } case "Left": return Lib_Types_error(null, Lib_Common_MkFC(_$$0, Prelude__$2C_(null, null, 0, 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)("error reading ")(_$$0))(": "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)($$sc.h2)))("")); } }))); })); const Prelude_isSuffixOf = (pfx, s) => s.endsWith(pfx) ? Prelude_True : Prelude_False; const Main_REC_cmdLine = ( arg ) => { switch (arg.tag) { case "return": return arg.h0; case "Main.cmdLine": { const _sc$$0 = arg.h0; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1) { case "--top": return { tag: "Main.cmdLine", h0: _sc$$0.h2 }; case "-v": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_modifyTop(( top ) => (Lib_Types_MkTop(Lib_Types__modules(top), Lib_Types__imported(top), Lib_Types__ns(top), Lib_Types__defs(top), Lib_Types__metaCtx(top), Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(Lib_Types__verbose(top))(1), Lib_Types__errors(top), Lib_Types__ops(top)))), ( _ ) => (Main_cmdLine(_sc$$0.h2))) }; case "-o": { const _sc$$2 = _sc$$0.h2; switch (_sc$$2.tag) { case "_::_": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_cmdLine(_sc$$2.h2), ( $$sc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, Prelude__$3C$7C$3E_(null, Prelude_Prelude_Alternative$20Prelude_Maybe)(null)($$sc.h2)(Prelude_Just(null, _sc$$2.h1)), $$sc.h3)))) }; default: { const sc$$4 = Prelude_isSuffixOf(".newt", _sc$$0.h1); switch (sc$$4.tag) { case "True": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_cmdLine(_sc$$0.h2), ( $$sc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, $$sc.h2, Prelude__$3A$3A_(null, _sc$$0.h1, $$sc.h3))))) }; default: return { tag: "return", h0: 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)("Bad argument ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_sc$$0.h1)))("")) }; } break; } } break; } default: { const sc$$4 = Prelude_isSuffixOf(".newt", _sc$$0.h1); switch (sc$$4.tag) { case "True": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_cmdLine(_sc$$0.h2), ( $$sc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, $$sc.h2, Prelude__$3A$3A_(null, _sc$$0.h1, $$sc.h3))))) }; default: return { tag: "return", h0: 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)("Bad argument ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_sc$$0.h1)))("")) }; } break; } } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$2C_(null, null, Prelude_Nothing(null), Prelude_Nil(null))) }; } break; } } }; const Main_cmdLine = ( _$$0 ) => (bouncer(Main_REC_cmdLine, { tag: "Main.cmdLine", h0: _$$0 })); -const Node_getArgs = Prelude_arrayToList(null, process.argv.slice(1)); -const Main_main$27 = (( ) => { const sc$$0 = Node_getArgs; switch (sc$$0.tag) { case "_::_": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_cmdLine(sc$$0.h2), ( $$sc ) => (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)(Main_processFile)($$sc.h3), ( _ ) => (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, "--top", sc$$0.h2), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_jsonTopContext, ( json ) => (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)("TOP:")(Lib_Common_renderJson(json)))("")))))), ( _1 ) => { const _sc$$0 = $$sc.h2; switch (_sc$$0.tag) { case "Nothing": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_MkUnit); case "Just": return Main_writeSource(_sc$$0.h1); } }))))); default: return Lib_Types_error(null, Lib_Common_emptyFC, "error reading args"); } })(); +const Node_getArgs = (w) => Prelude_MkIORes(null, Prelude_arrayToList(null, process.argv.slice(1)), w); +const Main_main$27 = 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_getArgs), ( $$sc ) => { switch ($$sc.tag) { case "_::_": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_cmdLine($$sc.h2), ( $$sc1 ) => (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)(Main_processFile)($$sc1.h3), ( _ ) => (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, "--top", $$sc.h2), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Main_jsonTopContext, ( json ) => (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)("TOP:")(Lib_Common_renderJson(json)))("")))))), ( _1 ) => { const _sc$$0 = $$sc1.h2; switch (_sc$$0.tag) { case "Nothing": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_MkUnit); case "Just": return Main_writeSource(_sc$$0.h1); } }))))); default: return Lib_Types_error(null, Lib_Common_emptyFC, "error reading args"); } }); const Prelude_List = ( h0 ) => ({ tag: "List", h0: h0 }); const Lib_TopContext_emptyTop = ( io, _, _1 ) => (Prelude__$3E$3E$3D_(null, null, null, _, Data_IORef_newIORef(null, null, _1, Lib_Types_MC(Data_SortedMap_EmptyMap(null, null), 0, Lib_Types_CheckAll)), ( mcctx ) => (Prelude__$3E$3E$3D_(null, null, null, _, Data_IORef_newIORef(null, null, _1, Prelude_the(Prelude_List(null), Prelude_Nil(null))), ( errs ) => (Prelude_pure(null, _)(null)(Lib_Types_MkTop(Data_SortedMap_EmptyMap(null, null), Prelude_Nil(null), Prelude_Nil(null), Data_SortedMap_EmptyMap(null, null), mcctx, 0, errs, Data_SortedMap_EmptyMap(null, null)))))))); const Main_main = Prelude__$3E$3E$3D_(null, null, null, Prelude_Prelude_Monad$20Prelude_IO, Lib_TopContext_emptyTop(null, Prelude_Prelude_Monad$20Prelude_IO, Prelude_Prelude_HasIO$20Prelude_IO), ( ctx ) => (Prelude__$3E$3E$3D_(null, null, null, Prelude_Prelude_Monad$20Prelude_IO, Lib_Types__runM(null, Main_main$27)(ctx), ( $$sc ) => { switch ($$sc.tag) { case "Right": return Prelude_putStrLn(null, Prelude_Prelude_HasIO$20Prelude_IO, "done"); 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)("ERROR at ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Common_Error)($$sc.h2))))(": "))(Lib_Types_errorMsg($$sc.h2)))("")); } }))); diff --git a/serializer.ts b/serializer.ts index a121620..2c35a2f 100644 --- a/serializer.ts +++ b/serializer.ts @@ -64,7 +64,6 @@ export class DecFile { if (!str.length) break this.pool.push(str); } - console.log('read pool', this.buf.pos) } read(): any { @@ -160,8 +159,11 @@ export class EncFile { poollen = 1; pool = new SerializationStream(); buf = new SerializationStream(); - pmap: Record = { "": 0 }; + pmap: Map = new Map(); + constructor() { + this.pmap.set("",0); + } static encode(data: any) { let f = new EncFile() f.write(data) @@ -170,11 +172,11 @@ export class EncFile { } writeString(s: string) { - let n = this.pmap[s]; + let n = this.pmap.get(s); if (n === undefined) { n = this.poollen++; this.pool.writeString(s); - this.pmap[s] = n; + this.pmap.set(s,n); } this.buf.writeVarint(n); } diff --git a/src/Data/SortedMap.newt b/src/Data/SortedMap.newt index f076698..f029cd2 100644 --- a/src/Data/SortedMap.newt +++ b/src/Data/SortedMap.newt @@ -195,6 +195,13 @@ toList {k} {v} (MapOf smap) = reverse $ go smap Nil go (Node3 t1 k1 t2 k2 t3) acc = go t3 $ go t2 $ go t1 acc toList _ = Nil +mapFromList : ∀ k v. {{Ord k}} {{Eq k}} → List (k × v) → SortedMap k v +mapFromList {k} {v} stuff = foldl go EmptyMap stuff + where + go : SortedMap k v → k × v → SortedMap k v + go map (k, v) = updateMap k v map + + foldMap : ∀ a b. {{Ord a}} → (b → b → b) → SortedMap a b → List (a × b) → SortedMap a b foldMap f m Nil = m foldMap f m ((a,b) :: xs) = case lookupMap a m of diff --git a/src/Lib/Compile.newt b/src/Lib/Compile.newt index 795e934..55a9a69 100644 --- a/src/Lib/Compile.newt +++ b/src/Lib/Compile.newt @@ -381,6 +381,7 @@ eraseEntries = do process : QName → M (List Doc) process name = do let wat = QN ("Prelude" :: Nil) "arrayToList" + top <- getTop entries <- getEntries EmptyMap name -- Maybe move this dance into liftWhere diff --git a/src/Lib/Types.newt b/src/Lib/Types.newt index d4a7266..a23038a 100644 --- a/src/Lib/Types.newt +++ b/src/Lib/Types.newt @@ -334,6 +334,7 @@ instance Show TopEntry where record ModContext where constructor MkModCtx + csum : String modDefs : SortedMap QName TopEntry -- Do we need this if everything solved is zonked? modMetaCtx : MetaContext @@ -348,8 +349,8 @@ record ModContext where -- expand these during normalization? -- A placeholder while walking through dependencies of a module -emptyModCtx : ModContext -emptyModCtx = MkModCtx EmptyMap (MC EmptyMap 0 NoCheck) EmptyMap +emptyModCtx : String → ModContext +emptyModCtx csum = MkModCtx csum EmptyMap (MC EmptyMap 0 NoCheck) EmptyMap record TopContext where constructor MkTop diff --git a/src/Main.newt b/src/Main.newt index 18bf3a8..366d6c0 100644 --- a/src/Main.newt +++ b/src/Main.newt @@ -79,6 +79,15 @@ parseDecls fn ops toks@(first :: _) acc = then (tok :: toks) else recover toks +moduleHash : String → List (List String) → M String +moduleHash src imports = do + srcHash <- liftIO $ checksum src + top <- getTop + let mods = mapMaybe (\x => lookupMap' x top.modules) imports + let modHashes = map (\x => x.csum) mods + liftIO $ checksum $ fastConcat $ srcHash :: modHashes + + -- New style loader, one def at a time processModule : FC -> String -> List String -> QName -> M String processModule importFC base stk qn@(QN ns nm) = do @@ -87,7 +96,8 @@ processModule importFC base stk qn@(QN ns nm) = do let modns = (snoc ns nm) let name = joinBy "." modns let (Nothing) = lookupMap modns top.modules | _ => pure "" - modifyTop (\ top => MkTop (updateMap modns emptyModCtx top.modules) top.imported top.ns top.defs top.metaCtx top.verbose top.errors top.ops) + -- dummy entry for processing + modifyTop (\ top => MkTop (updateMap modns (emptyModCtx "") top.modules) top.imported top.ns top.defs top.metaCtx top.verbose top.errors top.ops) let fn = (joinBy "/" (base :: ns)) ++ "/" ++ nm ++ ".newt" (Right src) <- liftIO {M} $ readFile fn | Left err => exitFailure "ERROR at \{show importFC}: error reading \{fn}: \{show err}" @@ -118,8 +128,22 @@ processModule importFC base stk qn@(QN ns nm) = do pure $ split name' "." let imported = snoc imported primNS + srcSum <- liftIO $ checksum src + csum <- moduleHash srcSum imported putStrLn "module \{modName}" + top <- getTop + (Nothing) <- loadModule qn csum + | Just mod => do + let modules = updateMap modns mod top.modules + + modifyTop (\ top => + -- FIXME - we don't want stray operators in a module. + -- inject module ops into top + let ops = foldMap const top.ops $ toList mod.ctxOps + in MkTop modules top.imported top.ns top.defs top.metaCtx top.verbose top.errors ops) + pure src -- why am I returning this? + log 1 $ \ _ => "MODNS " ++ show modns top <- getTop (decls, ops) <- parseDecls fn top.ops toks Lin @@ -135,11 +159,10 @@ processModule importFC base stk qn@(QN ns nm) = do top <- getTop mc <- readIORef top.metaCtx - let mod = MkModCtx top.defs mc top.ops - dumpModule qn src mod + let mod = MkModCtx csum top.defs mc top.ops + if stk == Nil then pure MkUnit else dumpModule qn src mod let modules = updateMap modns mod top.modules - freshMC <- newIORef (MC EmptyMap 0 CheckAll) modifyTop (\ top => MkTop modules top.imported top.ns top.defs top.metaCtx top.verbose top.errors top.ops) (Nil) <- liftIO {M} $ readIORef top.errors @@ -202,7 +225,7 @@ processFile fn = do processDecl primNS (PType emptyFC "Char" Nothing) top <- getTop - let modules = updateMap primNS (MkModCtx top.defs (MC EmptyMap 0 CheckAll) top.ops) top.modules + let modules = updateMap primNS (MkModCtx "" top.defs (MC EmptyMap 0 CheckAll) top.ops) top.modules modifyTop (\ top => MkTop modules (primNS :: Nil) Nil EmptyMap top.metaCtx top.verbose top.errors top.ops) src <- processModule emptyFC base Nil qn diff --git a/src/Serialize.newt b/src/Serialize.newt index c783398..fc3d082 100644 --- a/src/Serialize.newt +++ b/src/Serialize.newt @@ -6,10 +6,21 @@ import Lib.Common import Lib.Types import Data.SortedMap +ModFile : U +ModFile = (String × List TopEntry × List (String × OpDef) × List (QName × MetaEntry)) + +pfunc checksum uses (MkIORes) : String → IO String := `(a) => (w) => { + const arr = new TextEncoder().encode(a); + // djb2 hash + let val = 5381 + for (let i = 0; i < arr.length; i++) { + val = ((val * 33) + arr[i]) | 0 + } + return Prelude_MkIORes(null, ""+val, w); +}` + -- this was an experiment, prepping for dumping module information --- it ends up with out of memory dumping defs of some of the files. --- Prelude is 114MB pretty-printed... gzip to 1M -pfunc dumpObject uses (MkIORes MkUnit): ∀ a. String → a → IO Unit := `(_,fn,a) => (w) => { +pfunc dumpModFile uses (MkIORes MkUnit): String → ModFile → IO Unit := `(fn,a) => (w) => { let fs = require('fs') try { let {EncFile} = require('./serializer') @@ -19,11 +30,39 @@ pfunc dumpObject uses (MkIORes MkUnit): ∀ a. String → a → IO Unit := `(_,f return Prelude_MkIORes(null, Prelude_MkUnit, w) }` + -- for now, include src and use that to see if something changed dumpModule : QName → String → ModContext → M Unit dumpModule qn src mod = do let fn = "build/\{show qn}.newtmod" + let csum = mod.csum let defs = listValues mod.modDefs let ops = toList mod.ctxOps let mctx = toList mod.modMetaCtx.metas - liftIO $ dumpObject fn (src,defs,ops,mctx) + liftIO $ dumpModFile fn (csum,defs,ops,mctx) + +pfunc readModFile uses (MkIORes Just Nothing): String → IO (Maybe ModFile) := `(fn) => (w) => { + let fs = require('fs') + try { + let {DecFile} = require('./serializer') + let data = fs.readFileSync(fn) + let dec = DecFile.decode(data) + return Prelude_MkIORes(null, Prelude_Just(null, dec), w) + } catch (e) { + return Prelude_MkIORes(null, Prelude_Nothing, w) + } +}` + +loadModule : QName → String → M (Maybe ModContext) +loadModule qn src = do + let fn = "build/\{show qn}.newtmod" + (Just (csum, defs, ops, mctx)) <- liftIO {M} $ readModFile fn + | _ => pure Nothing + + let ops = mapFromList ops + let defs = mapFromList $ map (\ entry => (entry.name, entry)) defs + -- REVIEW can we ignore those last two inside a module + let mctx = MC (mapFromList mctx) 0 NoCheck + if csum == src + then pure $ Just $ MkModCtx csum defs mctx ops + else pure Nothing