diff --git a/Makefile b/Makefile index 93fecbc..66d1cc5 100644 --- a/Makefile +++ b/Makefile @@ -39,7 +39,7 @@ newt2.js: newt.js newt3.js: newt2.js rm -f build/* - $(RUNJS) newt2.js src/Main.newt -o newt3.js + time $(RUNJS) newt2.js src/Main.newt -o newt3.js cmp newt2.js newt3.js test: newt.js diff --git a/TODO.md b/TODO.md index 8244707..5c29851 100644 --- a/TODO.md +++ b/TODO.md @@ -8,9 +8,10 @@ Syntax -> Parser.Impl ? - [ ] implement magic nat (need primitive `+`, '-', and `==` in `CompileExp`) - [ ] drop erased args on types and top level functions - [ ] can I do some inlining without blowing up code size? -- [ ] implement string enum (or number, but I'm using strings for tags at the moment) -- [ ] use monaco input method instead of lean's -- [ ] `Def` is shadowed between Types and Syntax (TCon vs DCon), detect this +- [ ] use hint table for auto solving. (I think walking the `toList` is a big chunk of performance in `Elab.newt`.) +- [x] implement string enum (or number, but I'm using strings for tags at the moment) +- [x] use monaco input method instead of lean's +- [x] `Def` is shadowed between Types and Syntax (TCon vs DCon), detect this - [ ] review pattern matching. goal is to have a sane context on the other end. secondary goal - bring it closer to the paper. - Two issues - I'm rewriting stuff in the context, leaving it in a bad state (forward references). I think I can avoid this. @@ -88,15 +89,15 @@ More comments in code! This is getting big enough that I need to re-find my bear - [ ] add default failing case for constructor matching to catch errors - [x] Add icit to Lam - [ ] add jump to definition magic to vscode extension - - [x] Cheap dump to def - dump context -- [ ] TCO? Probably needed in browser, since v8 doesn't do it. bun and JavaScriptCore do support it. + - [x] Working for top level, we may want a proper REPL or LSP (and FC ranges?) before we do others +- [x] TCO? Probably needed in browser, since v8 doesn't do it. bun and JavaScriptCore do support it. - [x] deconstructing `let` (and do arrows) - [x] Fix string printing to be js instead of weird Idris strings - [x] make $ special - Makes inference easier, cleaner output, and allows `foo $ \ x => ...` - [ ] `$` no longer works inside ≡⟨ ⟩ sort out how to support both that and `$ \ x => ...` (or don't bother) - We'd either need to blacklist all non-initial mixfix bits at the appropriate spots or always pass around a terminating token. -- [ ] **Translate newt to newt** +- [x] **Translate newt to newt** - [x] Support @ on the LHS - [x] if / then / else sugar - [x] `data Foo = A | B` sugar @@ -152,7 +153,7 @@ More comments in code! This is getting big enough that I need to re-find my bear - [ ] copattern matching - [ ] Get `Combinatory.newt` to work - [x] Remember operators from imports -- [ ] Default cases for non-primitives (currently gets expanded to all constructors) +- [x] Default cases for non-primitives (currently gets expanded to all constructors) - This may need a little care. But I think I could collect all constructors that only match wildcards into a single case. This would lose any information from breaking out the individual, unnamed cases though. - There are cases where we have `_` and then `Foo` on the next line, but they should all get collected into the `Foo` case. I think I sorted all of this out for primitives. - [x] Case for primitives diff --git a/bootstrap/newt.js b/bootstrap/newt.js index 9ac56d2..02e3ec2 100644 --- a/bootstrap/newt.js +++ b/bootstrap/newt.js @@ -463,8 +463,9 @@ const Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm = Lib_Common_MkHasFC(null, Lib_T const Lib_Util_REC_funArgs_go = ( arg ) => { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "App": return { tag: "Lib.Util.funArgs.go", h0: arg.h0, h1: arg.h1, h2: _sc$$0.h1, h3: Prelude__$3A$3A_(null, _sc$$0.h2, arg.h3) }; default: return { tag: "return", h0: Prelude__$2C_(null, null, arg.h2, arg.h3) }; } }; const Lib_Util_funArgs_go = ( _, _1, _$$2, _$$3 ) => (bouncer(Lib_Util_REC_funArgs_go, { tag: "Lib.Util.funArgs.go", h0: _, h1: _1, h2: _$$2, h3: _$$3 })); const Lib_Util_funArgs = ( _$$0 ) => (Lib_Util_funArgs_go(_$$0, null, _$$0, Prelude_Nil(null))); +const Lib_CompileExp_lookupDef = ( _$$0, _$$1, _$$2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => { const sc$$4 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$2, defs); switch (sc$$4.tag) { case "Nothing": return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$2)))(" not in scope")); case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(sc$$4.h1); } })); const Prelude_for = ( t$$0, f$$1, _$$2, appf$$3, a$$4, b$$5, _$$6, _$$7 ) => (Prelude_traverse(null, _$$2)(null)(null)(null)(appf$$3)(_$$7)(_$$6)); -const Lib_CompileExp_compileTerm = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Erased": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CErased); case "Lit": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLit(_$$1.h1)); case "LetRec": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h3), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h4), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLetRec(_$$1.h1, t$27, u$27)))))); case "Let": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h2), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h3), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLet(_$$1.h1, t$27, u$27)))))); case "Case": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h1), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$1.h2, ( $$case ) => { switch ($$case.tag) { case "CaseLit": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CLitAlt($$case.h0, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h1)); case "CaseCons": { const _sc$$0 = $$case.h0; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => { const sc$$14 = Prelude_the(Prelude_Maybe(null), Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, $$case.h0, defs)); switch (sc$$14.tag) { case "Just": { const _sc$$1 = sc$$14.h1; switch (_sc$$1.tag) { case "DCon": { const _sc$$2 = _sc$$1.h0; switch (_sc$$2) { case "EnumCon": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CLitAlt(Lib_Types_LString(_sc$$0.h1), eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h2)); default: return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CConAlt(_sc$$0.h1, $$case.h1, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h2)); } break; } default: return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CConAlt(_sc$$0.h1, $$case.h1, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h2)); } break; } default: return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CConAlt(_sc$$0.h1, $$case.h1, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h2)); } }); break; } case "CaseDefault": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, Lib_CompileExp_CDefAlt, Lib_CompileExp_compileTerm(_$$0, $$case.h0)); } }), ( alts$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CCase(t$27, alts$27)))))); case "Pi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h4), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h5), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CApp(Lib_CompileExp_CRef(Lib_Common_QN(Prelude_Nil(null), "PiType")), Prelude__$3A$3A_(null, t$27, Prelude__$3A$3A_(null, Lib_CompileExp_CLam(_$$1.h1, u$27), Prelude_Nil(null))), 0)))))); case "UU": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(Lib_Common_QN(Prelude_Nil(null), "U"))); case "App": { const sc$$5 = Lib_Util_funArgs(_$$1); const _sc$$0 = sc$$5.h2; switch (_sc$$0.tag) { case "Meta": return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(_$$1), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Compiling an unsolved meta ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Tm)(_$$1)))("")); case "Ref": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_CompileExp_compileTerm(_$$0, eta)))(sc$$5.h3), ( args$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_arityForName(_$$0, _sc$$0.h0, _sc$$0.h1), ( arity ) => (Lib_CompileExp_apply(Lib_CompileExp_CRef(_sc$$0.h1), args$27, Prelude_Lin(null), arity))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("apply other ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$5.h2))))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, sc$$5.h2), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_CompileExp_compileTerm(_$$0, eta)))(sc$$5.h3), ( args$27 ) => (Lib_CompileExp_apply(t$27, args$27, Prelude_Lin(null), Prelude_Z))))))); } break; } case "Lam": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CLam(_$$1.h1, eta)), Lib_CompileExp_compileTerm(_$$0, _$$1.h4)); case "Meta": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(Lib_Common_QN(Prelude_Nil(null), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("meta$")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1.h1)))("")))); case "Ref": { const _sc$$0 = _$$1.h1; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_arityForName(_$$0, _$$1.h0, _$$1.h1), ( arity ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => { switch (arity.tag) { case "S": { const _sc$$1 = arity.h0; switch (_sc$$1.tag) { case "Z": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); default: return Lib_CompileExp_apply(Lib_CompileExp_CRef(_$$1.h1), Prelude_Nil(null), Prelude_Lin(null), arity); } break; } case "Z": { const sc$$9 = Prelude_the(Prelude_Maybe(null), Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$1.h1, defs)); switch (sc$$9.tag) { case "Just": { const _sc$$1 = sc$$9.h1; switch (_sc$$1.tag) { case "DCon": { const _sc$$2 = _sc$$1.h0; switch (_sc$$2) { case "EnumCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLit(Lib_Types_LString(_sc$$0.h1))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } } }))); break; } case "Bnd": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CBnd(_$$1.h1)); } }; +const Lib_CompileExp_compileTerm = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Erased": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CErased); case "Lit": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLit(_$$1.h1)); case "LetRec": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h3), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h4), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLetRec(_$$1.h1, t$27, u$27)))))); case "Let": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h2), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h3), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLet(_$$1.h1, t$27, u$27)))))); case "Case": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h1), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$1.h2, ( $$case ) => { switch ($$case.tag) { case "CaseLit": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CLitAlt($$case.h0, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h1)); case "CaseCons": { const _sc$$0 = $$case.h0; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_lookupDef(_$$0, Lib_Common_emptyFC, $$case.h0), ( def ) => { switch (def.tag) { case "DCon": { const _sc$$1 = def.h0; switch (_sc$$1) { case "EnumCon": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CLitAlt(Lib_Types_LString(_sc$$0.h1), eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h2)); default: return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CConAlt(_sc$$0.h1, $$case.h1, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h2)); } break; } default: return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CConAlt(_sc$$0.h1, $$case.h1, eta)), Lib_CompileExp_compileTerm(_$$0, $$case.h2)); } }))); break; } case "CaseDefault": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, Lib_CompileExp_CDefAlt, Lib_CompileExp_compileTerm(_$$0, $$case.h0)); } }), ( alts$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CCase(t$27, alts$27)))))); case "Pi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h4), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, _$$1.h5), ( u$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CApp(Lib_CompileExp_CRef(Lib_Common_QN(Prelude_Nil(null), "PiType")), Prelude__$3A$3A_(null, t$27, Prelude__$3A$3A_(null, Lib_CompileExp_CLam(_$$1.h1, u$27), Prelude_Nil(null))), 0)))))); case "UU": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(Lib_Common_QN(Prelude_Nil(null), "U"))); case "App": { const sc$$5 = Lib_Util_funArgs(_$$1); const _sc$$0 = sc$$5.h2; switch (_sc$$0.tag) { case "Meta": return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(_$$1), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Compiling an unsolved meta ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Tm)(_$$1)))("")); case "Ref": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_CompileExp_compileTerm(_$$0, eta)))(sc$$5.h3), ( args$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_arityForName(_$$0, _sc$$0.h0, _sc$$0.h1), ( arity ) => (Lib_CompileExp_apply(Lib_CompileExp_CRef(_sc$$0.h1), args$27, Prelude_Lin(null), arity))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("apply other ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$5.h2))))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_compileTerm(_$$0, sc$$5.h2), ( t$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_CompileExp_compileTerm(_$$0, eta)))(sc$$5.h3), ( args$27 ) => (Lib_CompileExp_apply(t$27, args$27, Prelude_Lin(null), Prelude_Z))))))); } break; } case "Lam": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CLam(_$$1.h1, eta)), Lib_CompileExp_compileTerm(_$$0, _$$1.h4)); case "Meta": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(Lib_Common_QN(Prelude_Nil(null), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("meta$")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$1.h1)))("")))); case "Ref": { const _sc$$0 = _$$1.h1; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_CompileExp_arityForName(_$$0, _$$1.h0, _$$1.h1), ( arity ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Ref2_getRef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Ref2_Defs, _$$0), ( defs ) => { switch (arity.tag) { case "S": { const _sc$$1 = arity.h0; switch (_sc$$1.tag) { case "Z": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); default: return Lib_CompileExp_apply(Lib_CompileExp_CRef(_$$1.h1), Prelude_Nil(null), Prelude_Lin(null), arity); } break; } case "Z": { const sc$$9 = Prelude_the(Prelude_Maybe(null), Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$1.h1, defs)); switch (sc$$9.tag) { case "Just": { const _sc$$1 = sc$$9.h1; switch (_sc$$1.tag) { case "DCon": { const _sc$$2 = _sc$$1.h0; switch (_sc$$2) { case "EnumCon": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CLit(Lib_Types_LString(_sc$$0.h1))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CRef(_$$1.h1)); } break; } } }))); break; } case "Bnd": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_CompileExp_CBnd(_$$1.h1)); } }; const Lib_CompileExp_REC_compileFun_go = ( arg ) => { const _sc$$0 = arg.h3; switch (_sc$$0.tag) { case "Lam": return { tag: "Lib.CompileExp.compileFun.go", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: _sc$$0.h4, h4: Prelude__$3A$3C_(null, arg.h4, _sc$$0.h1) }; default: { const _sc$$1 = arg.h4; switch (_sc$$1.tag) { case "Lin": return { tag: "return", h0: Lib_CompileExp_compileTerm(arg.h0, arg.h3) }; default: return { tag: "return", h0: Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_CompileExp_CFun(Prelude__$3C$3E$3E_(null, arg.h4, Prelude_Nil(null)), eta)), Lib_CompileExp_compileTerm(arg.h0, arg.h3)) }; } break; } } }; const Lib_CompileExp_compileFun_go = ( _, _1, _2, _$$3, _$$4 ) => (bouncer(Lib_CompileExp_REC_compileFun_go, { tag: "Lib.CompileExp.compileFun.go", h0: _, h1: _1, h2: _2, h3: _$$3, h4: _$$4 })); const Lib_CompileExp_compileFun = ( _$$0, _$$1 ) => (Lib_CompileExp_compileFun_go(_$$0, _$$1, null, _$$1, Prelude_Lin(null))); @@ -517,10 +518,10 @@ const Lib_Compile_eraseEntries = ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, const Data_IORef_primNewIORef = (_, a) => (w) => Prelude_MkIORes(null, [a], w); const Data_IORef_newIORef = ( io$$0, a$$1, _$$2, _$$3 ) => (Prelude_liftIO(null, _$$2)(null)(Data_IORef_primNewIORef(null, _$$3))); 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_getNames_getAltNames = ( _, _1, _2, _3, _4, _5, _$$6, _$$7 ) => { switch (_$$7.tag) { case "CaseLit": return Lib_Compile_getNames(_$$7.h1, _$$6); case "CaseCons": return Prelude__$3A$3A_(null, _$$7.h0, Lib_Compile_getNames(_$$7.h2, _$$6)); case "CaseDefault": return Lib_Compile_getNames(_$$7.h0, _$$6); } }; const Lib_Compile_REC_getNames = ( arg ) => { 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 }; } }; 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_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$$12 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _sc$$0.h1, _$$0); switch (sc$$12.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_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 ) => { 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) }; } }; @@ -534,7 +535,6 @@ const Prelude_ite = ( a$$0, _$$1, _$$2, _$$3 ) => { switch (_$$1) { case "False" const Data_Int_Prelude_Cast$20Prim_Int$20Prim_String$2Ccast = Prelude_show(null, Prelude_Prelude_Show$20Prim_Int); const Data_Int_Prelude_Cast$20Prim_Int$20Prim_String = Prelude_MkCast(null, null, Data_Int_Prelude_Cast$20Prim_Int$20Prim_String$2Ccast); const Lib_Common_renderJson = ( _$$0 ) => { switch (_$$0.tag) { case "JsonArray": return Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("[")(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude_joinBy(",", Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Common_renderJson)(_$$0.h0)))("]")); case "JsonInt": return Prelude_cast(null, null, Data_Int_Prelude_Cast$20Prim_Int$20Prim_String)(_$$0.h0); case "JsonBool": return Prelude_ite(null, _$$0.h0, "true", "false"); case "JsonStr": return Lib_Common_quoteString(_$$0.h0); case "JsonObj": return Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("{")(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude_joinBy(",", Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_Common_renderJson_renderPair(_$$0, _$$0.h0, null, eta)))(_$$0.h0)))("}")); } }; -const Data_SortedMap_listValues = ( k$$0, v$$1, _$$2 ) => (Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_snd(null, null, eta)))(Data_SortedMap_toList(null, null, _$$2))); const Lib_Common_JsonStr = ( h0 ) => ({ tag: "JsonStr", h0: h0 }); const Lib_Common_Lib_Common_ToJSON$20Prim_String$2CtoJson = Lib_Common_JsonStr; const Lib_Common_MkToJSON = ( h0, h1 ) => ({ tag: "MkToJSON", h0: h0, h1: h1 }); @@ -548,7 +548,8 @@ const Lib_Common_Lib_Common_ToJSON$20Lib_Common_FC$2CtoJson = ( _$$0 ) => { cons const Lib_Common_Lib_Common_ToJSON$20Lib_Common_FC = Lib_Common_MkToJSON(null, Lib_Common_Lib_Common_ToJSON$20Lib_Common_FC$2CtoJson); const Main_jsonTopContext_jsonDef = ( _, _$$1 ) => { const _sc$$0 = _$$1.h1; return Lib_Common_JsonObj(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, "fc", Lib_Common_toJson(null, Lib_Common_Lib_Common_ToJSON$20Lib_Common_FC)(_$$1.h0)), Prelude__$3A$3A_(null, Prelude__$2C_(null, null, "name", Lib_Common_toJson(null, Lib_Common_Lib_Common_ToJSON$20Prim_String)(_sc$$0.h1)), Prelude__$3A$3A_(null, Prelude__$2C_(null, null, "type", Lib_Common_toJson(null, Lib_Common_Lib_Common_ToJSON$20Prim_String)(Lib_Prettier_render(80, Lib_Types_pprint(Prelude_Nil(null), _$$1.h2)))), Prelude_Nil(null))))); }; const Lib_Common_JsonArray = ( h0 ) => ({ tag: "JsonArray", h0: h0 }); -const Main_jsonTopContext = Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Common_JsonObj(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, "context", Lib_Common_JsonArray(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Main_jsonTopContext_jsonDef(null, eta)))(Data_SortedMap_listValues(null, null, Lib_Types__defs(top))))), Prelude_Nil(null)))))); +const Data_SortedMap_listValues = ( k$$0, v$$1, _$$2 ) => (Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_snd(null, null, eta)))(Data_SortedMap_toList(null, null, _$$2))); +const Main_jsonTopContext = Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const defs = Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( mod ) => (Data_SortedMap_listValues(null, null, Lib_Types__modDefs(mod))))(Data_SortedMap_listValues(null, null, Lib_Types__modules(top)))); return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Common_JsonObj(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, "context", Lib_Common_JsonArray(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Main_jsonTopContext_jsonDef(null, eta)))(defs))), Prelude_Nil(null)))); }); const Prelude_arrayToList = (a,arr) => { let rval = Prelude_Nil(null) for (let i = arr.length - 1;i >= 0; i--) { @@ -765,7 +766,7 @@ const Lib_Syntax_PatVar = ( h0, h1, h2 ) => ({ tag: "PatVar", h0: h0, h1: h1, const Lib_Syntax_PatWild = ( h0, h1 ) => ({ tag: "PatWild", h0: h0, h1: h1 }); const Lib_Syntax_getIcit = ( _$$0 ) => { switch (_$$0.tag) { case "PatLit": return "Explicit"; case "PatWild": return _$$0.h1; case "PatCon": return _$$0.h1; case "PatVar": return _$$0.h1; } }; const Lib_Elab_buildCase_constrainSpine_getName_makeConstr = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _$$16, _$$17, _$$18 ) => { switch (_$$18.tag) { case "_::_": switch (_$$17.tag) { case "_::_": { const _sc$$0 = _$$17.h1; const _sc$$1 = _sc$$0.h1; switch (_sc$$1) { case "Explicit": { const sc$$28 = Prelude__$3D$3D_(null, Lib_Types_Prelude_Eq$20Lib_Types_Icit)(Lib_Syntax_getIcit(_$$18.h1))("Explicit"); switch (sc$$28) { case "False": return Lib_Types_error(null, Lib_Types__ctxFC(_), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("mismatch between Explicit and ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Icit)(Lib_Syntax_getIcit(_$$18.h1))))("")); case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildCase_constrainSpine_getName_makeConstr(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _$$16, _$$17.h2, _$$18.h2), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _sc$$0.h0, _$$18.h1), rest)))); } break; } default: { const sc$$28 = Prelude__$2F$3D_(null, Lib_Types_Prelude_Eq$20Lib_Types_Icit, Lib_Syntax_getIcit(_$$18.h1), _sc$$0.h1); switch (sc$$28) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildCase_constrainSpine_getName_makeConstr(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _$$16, _$$17.h2, _$$18.h2), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _sc$$0.h0, _$$18.h1), rest)))); case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildCase_constrainSpine_getName_makeConstr(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _$$16, _$$17.h2, Prelude__$3A$3A_(null, _$$18.h1, _$$18.h2)), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _sc$$0.h0, Lib_Syntax_PatWild(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_$$18.h1), _sc$$0.h1)), rest)))); } break; } } break; } case "Nil": return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Pattern)(_$$18.h1), "too many patterns"); } break; case "Nil": switch (_$$17.tag) { case "_::_": { const _sc$$0 = _$$17.h1; const _sc$$1 = _sc$$0.h1; switch (_sc$$1) { case "Auto": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildCase_constrainSpine_getName_makeConstr(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _$$16, _$$17.h2, Prelude_Nil(null)), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _sc$$0.h0, Lib_Syntax_PatWild(Lib_Common_emptyFC, "Auto")), rest)))); case "Explicit": return Lib_Types_error(null, _$$16, "not enough patterns"); case "Implicit": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildCase_constrainSpine_getName_makeConstr(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _$$16, _$$17.h2, Prelude_Nil(null)), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _sc$$0.h0, Lib_Syntax_PatWild(Lib_Common_emptyFC, "Implicit")), rest)))); } break; } case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nil(null)); } break; } }; -const Lib_Elab_REC_buildCase_constrainSpine_getName_makeConstr_rewriteConstraint = ( arg ) => { const _sc$$0 = arg.h19; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const sc$$28 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(_sc$$1.h2)(arg.h2); switch (sc$$28) { case "False": return { tag: "Lib.Elab.buildCase.constrainSpine.getName.makeConstr.rewriteConstraint", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6, h7: arg.h7, h8: arg.h8, h9: arg.h9, h10: arg.h10, h11: arg.h11, h12: arg.h12, h13: arg.h13, h14: arg.h14, h15: arg.h15, h16: arg.h16, h17: arg.h17, h18: arg.h18, h19: _sc$$0.h2, h20: Prelude__$3A$3A_(null, _sc$$0.h1, arg.h20) }; case "True": { const _sc$$2 = _sc$$1.h3; switch (_sc$$2.tag) { case "PatLit": return { tag: "return", h0: Lib_Types_error(null, _sc$$2.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Literal ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Literal)(_sc$$2.h1)))(" in constructor split")) }; case "PatWild": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, Prelude__$3A$3A_(null, _sc$$0.h1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$0.h2)(arg.h20)))) }; case "PatCon": { const sc$$35 = Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_sc$$2.h2)(arg.h7); switch (sc$$35) { case "False": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$37 = Lib_TopContext_lookup(_sc$$2.h2, top); switch (sc$$37.tag) { case "Nothing": return Lib_Types_error(null, _sc$$2.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal Error: DCon ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$2.h2)))(" not found")); case "Just": { const _sc$$3 = sc$$37.h1; const _sc$$4 = _sc$$3.h3; switch (_sc$$4.tag) { case "DCon": { const sc$$47 = Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$4.h2, arg.h17); switch (sc$$47) { case "False": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); case "True": return Lib_Types_error(null, _sc$$2.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)("Constructor is ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$4.h2)))(" expected "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(arg.h17)))("")); } break; } default: return Lib_Types_error(null, _sc$$2.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal Error: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$2.h2)))(" is not a DCon")); } break; } } }) }; case "True": { const _sc$$3 = _sc$$2.h4; switch (_sc$$3.tag) { case "Nothing": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildCase_constrainSpine_getName_makeConstr(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, arg.h5, arg.h6, arg.h7, arg.h8, arg.h9, arg.h10, arg.h11, arg.h12, arg.h13, arg.h14, arg.h15, _sc$$2.h0, arg.h18, _sc$$2.h3), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(rest)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$0.h2)(arg.h20)))))) }; case "Just": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildCase_constrainSpine_getName_makeConstr(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, arg.h5, arg.h6, arg.h7, arg.h8, arg.h9, arg.h10, arg.h11, arg.h12, arg.h13, arg.h14, arg.h15, _sc$$2.h0, arg.h18, _sc$$2.h3), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, arg.h2, Lib_Syntax_PatVar(_sc$$2.h0, _sc$$2.h1, _sc$$3.h1)), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(rest)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$0.h2)(arg.h20))))))) }; } break; } } break; } case "PatVar": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, Prelude__$3A$3A_(null, _sc$$0.h1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$0.h2)(arg.h20)))) }; } break; } } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, arg.h20)) }; } }; +const Lib_Elab_REC_buildCase_constrainSpine_getName_makeConstr_rewriteConstraint = ( arg ) => { const _sc$$0 = arg.h19; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const sc$$28 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(_sc$$1.h2)(arg.h2); switch (sc$$28) { case "False": return { tag: "Lib.Elab.buildCase.constrainSpine.getName.makeConstr.rewriteConstraint", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6, h7: arg.h7, h8: arg.h8, h9: arg.h9, h10: arg.h10, h11: arg.h11, h12: arg.h12, h13: arg.h13, h14: arg.h14, h15: arg.h15, h16: arg.h16, h17: arg.h17, h18: arg.h18, h19: _sc$$0.h2, h20: Prelude__$3A$3A_(null, _sc$$0.h1, arg.h20) }; case "True": { const _sc$$2 = _sc$$1.h3; switch (_sc$$2.tag) { case "PatLit": return { tag: "return", h0: Lib_Types_error(null, _sc$$2.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Literal ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Literal)(_sc$$2.h1)))(" in constructor split")) }; case "PatWild": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, Prelude__$3A$3A_(null, _sc$$0.h1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$0.h2)(arg.h20)))) }; case "PatCon": { const sc$$35 = Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_sc$$2.h2)(arg.h7); switch (sc$$35) { case "False": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$37 = Lib_TopContext_lookup(_sc$$2.h2, top); switch (sc$$37.tag) { case "Nothing": return Lib_Types_error(null, _sc$$2.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal Error: DCon ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$2.h2)))(" not found")); case "Just": { const _sc$$3 = sc$$37.h1; const _sc$$4 = _sc$$3.h3; switch (_sc$$4.tag) { case "DCon": { const sc$$48 = Prelude__$2F$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName, _sc$$4.h2, arg.h17); switch (sc$$48) { case "False": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); case "True": return Lib_Types_error(null, _sc$$2.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)("Constructor is ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$4.h2)))(" expected "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(arg.h17)))("")); } break; } default: return Lib_Types_error(null, _sc$$2.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Internal Error: ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$2.h2)))(" is not a DCon")); } break; } } }) }; case "True": { const _sc$$3 = _sc$$2.h4; switch (_sc$$3.tag) { case "Nothing": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildCase_constrainSpine_getName_makeConstr(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, arg.h5, arg.h6, arg.h7, arg.h8, arg.h9, arg.h10, arg.h11, arg.h12, arg.h13, arg.h14, arg.h15, _sc$$2.h0, arg.h18, _sc$$2.h3), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(rest)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$0.h2)(arg.h20)))))) }; case "Just": return { tag: "return", h0: Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildCase_constrainSpine_getName_makeConstr(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, arg.h5, arg.h6, arg.h7, arg.h8, arg.h9, arg.h10, arg.h11, arg.h12, arg.h13, arg.h14, arg.h15, _sc$$2.h0, arg.h18, _sc$$2.h3), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, arg.h2, Lib_Syntax_PatVar(_sc$$2.h0, _sc$$2.h1, _sc$$3.h1)), Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(rest)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$0.h2)(arg.h20))))))) }; } break; } } break; } case "PatVar": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, Prelude__$3A$3A_(null, _sc$$0.h1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$0.h2)(arg.h20)))) }; } break; } } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, arg.h20)) }; } }; const Lib_Elab_buildCase_constrainSpine_getName_makeConstr_rewriteConstraint = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _$$17, _$$18, _$$19, _$$20 ) => (bouncer(Lib_Elab_REC_buildCase_constrainSpine_getName_makeConstr_rewriteConstraint, { tag: "Lib.Elab.buildCase.constrainSpine.getName.makeConstr.rewriteConstraint", h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: _5, h6: _6, h7: _7, h8: _8, h9: _9, h10: _10, h11: _11, h12: _12, h13: _13, h14: _14, h15: _15, h16: _16, h17: _$$17, h18: _$$18, h19: _$$19, h20: _$$20 })); const Lib_Elab_buildCase_constrainSpine_getName_makeConstr_rewriteConstraint_rewriteClause = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _$$18, _$$19, _$$20 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildCase_constrainSpine_getName_makeConstr_rewriteConstraint(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _$$18, _$$19, _$$20.h1, Prelude_Nil(null)), ( $$sc ) => { switch ($$sc.tag) { case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, Lib_Syntax_MkClause(_$$20.h0, $$sc.h1, _$$20.h2, _$$20.h3))); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } })); const Lib_Elab_Prelude_Show$20Lib_Elab_Bind$2Cshow = ( _$$0 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(_$$0.h0))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Icit)(_$$0.h1)))("")); @@ -837,20 +838,20 @@ const Lib_Syntax_RLet = ( h0, h1, h2, h3, h4 ) => ({ tag: "RLet", h0: h0, h1: const Lib_Syntax_MkAlt = ( h0, h1 ) => ({ tag: "MkAlt", h0: h0, h1: h1 }); const Lib_Syntax_RCase = ( h0, h1, h2 ) => ({ tag: "RCase", h0: h0, h1: h1, h2: h2 }); const Lib_Elab_undo = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "_::_": { const _sc$$0 = _$$1.h1; switch (_sc$$0.tag) { case "DoArrow": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "RVar": { const _sc$$2 = _sc$$0.h3; switch (_sc$$2.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$13 = Lib_TopContext_lookupRaw(_sc$$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_Elab_undo(_sc$$0.h0, _$$1.h2), ( xs$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_RApp(_sc$$0.h0, Lib_Syntax_RApp(_sc$$0.h0, Lib_Syntax_RVar(_sc$$0.h0, "_>>=_"), _sc$$0.h2, "Explicit"), Lib_Syntax_RLam(_sc$$0.h0, Lib_Types_BI(_sc$$1.h0, _sc$$1.h1, "Explicit", "Many"), xs$27), "Explicit")))); case "Just": { const nm = "$sc"; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_undo(_sc$$0.h0, _$$1.h2), ( xs$27 ) => (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)(Lib_Syntax_RCase(_sc$$0.h0, Lib_Syntax_RVar(_sc$$0.h0, nm), Prelude__$3A$3A_(null, Lib_Syntax_MkAlt(_sc$$0.h1, xs$27), Prelude_Nil(null)))), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_RApp(_sc$$0.h0, Lib_Syntax_RApp(_sc$$0.h0, Lib_Syntax_RVar(_sc$$0.h0, "_>>=_"), _sc$$0.h2, "Explicit"), Lib_Syntax_RLam(_sc$$0.h0, Lib_Types_BI(_sc$$0.h0, nm, "Explicit", "Many"), rest), "Explicit")))))); break; } } }); default: { const nm = "$sc"; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_undo(_sc$$0.h0, _$$1.h2), ( xs$27 ) => (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)(Lib_Syntax_RCase(_sc$$0.h0, Lib_Syntax_RVar(_sc$$0.h0, nm), Prelude__$3A$3A_(null, Lib_Syntax_MkAlt(_sc$$0.h1, xs$27), _sc$$0.h3))), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_RApp(_sc$$0.h0, Lib_Syntax_RApp(_sc$$0.h0, Lib_Syntax_RVar(_sc$$0.h0, "_>>=_"), _sc$$0.h2, "Explicit"), Lib_Syntax_RLam(_sc$$0.h0, Lib_Types_BI(_sc$$0.h0, nm, "Explicit", "Many"), rest), "Explicit")))))); break; } } break; } default: { const nm = "$sc"; return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_undo(_sc$$0.h0, _$$1.h2), ( xs$27 ) => (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)(Lib_Syntax_RCase(_sc$$0.h0, Lib_Syntax_RVar(_sc$$0.h0, nm), Prelude__$3A$3A_(null, Lib_Syntax_MkAlt(_sc$$0.h1, xs$27), _sc$$0.h3))), ( rest ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_RApp(_sc$$0.h0, Lib_Syntax_RApp(_sc$$0.h0, Lib_Syntax_RVar(_sc$$0.h0, "_>>=_"), _sc$$0.h2, "Explicit"), Lib_Syntax_RLam(_sc$$0.h0, Lib_Types_BI(_sc$$0.h0, nm, "Explicit", "Many"), rest), "Explicit")))))); break; } } break; } case "DoLet": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_Syntax_RLet(_sc$$0.h0, _sc$$0.h1, Lib_Syntax_RImplicit(_sc$$0.h0), _sc$$0.h2, eta)), Lib_Elab_undo(_sc$$0.h0, _$$1.h2)); case "DoExpr": { const _sc$$1 = _$$1.h2; switch (_sc$$1.tag) { case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_sc$$0.h1); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_undo(_sc$$0.h0, _$$1.h2), ( xs$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_RApp(_sc$$0.h0, Lib_Syntax_RApp(_sc$$0.h0, Lib_Syntax_RVar(_sc$$0.h0, "_>>=_"), _sc$$0.h1, "Explicit"), Lib_Syntax_RLam(_sc$$0.h0, Lib_Types_BI(_sc$$0.h0, "_", "Explicit", "Many"), xs$27), "Explicit")))); } break; } } break; } case "Nil": return Lib_Types_error(null, _$$0, "do block must end in expression"); } }; -const Lib_Syntax_Def = ( h0, h1, h2 ) => ({ tag: "Def", h0: h0, h1: h1, h2: h2 }); -const Lib_Elab_REC_collectDecl = ( arg ) => { const _sc$$0 = arg.h0; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "Def": { const _sc$$2 = _sc$$0.h2; switch (_sc$$2.tag) { case "_::_": { const _sc$$3 = _sc$$2.h1; switch (_sc$$3.tag) { case "Def": { const sc$$13 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(_sc$$1.h1)(_sc$$3.h1); switch (sc$$13) { case "False": return { tag: "return", h0: Prelude__$3A$3A_(null, Lib_Syntax_Def(_sc$$1.h0, _sc$$1.h1, _sc$$1.h2), Lib_Elab_collectDecl(_sc$$0.h2)) }; case "True": return { tag: "Lib.Elab.collectDecl", h0: Prelude__$3A$3A_(null, Lib_Syntax_Def(_sc$$1.h0, _sc$$1.h1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$1.h2)(_sc$$3.h2)), _sc$$2.h2) }; } break; } default: return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h1, Lib_Elab_collectDecl(_sc$$0.h2)) }; } break; } default: return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h1, Lib_Elab_collectDecl(_sc$$0.h2)) }; } break; } default: return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h1, Lib_Elab_collectDecl(_sc$$0.h2)) }; } break; } case "Nil": return { tag: "return", h0: Prelude_Nil(null) }; } }; +const Lib_Syntax_FunDef = ( h0, h1, h2 ) => ({ tag: "FunDef", h0: h0, h1: h1, h2: h2 }); +const Lib_Elab_REC_collectDecl = ( arg ) => { const _sc$$0 = arg.h0; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "FunDef": { const _sc$$2 = _sc$$0.h2; switch (_sc$$2.tag) { case "_::_": { const _sc$$3 = _sc$$2.h1; switch (_sc$$3.tag) { case "FunDef": { const sc$$13 = Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(_sc$$1.h1)(_sc$$3.h1); switch (sc$$13) { case "False": return { tag: "return", h0: Prelude__$3A$3A_(null, Lib_Syntax_FunDef(_sc$$1.h0, _sc$$1.h1, _sc$$1.h2), Lib_Elab_collectDecl(_sc$$0.h2)) }; case "True": return { tag: "Lib.Elab.collectDecl", h0: Prelude__$3A$3A_(null, Lib_Syntax_FunDef(_sc$$1.h0, _sc$$1.h1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29(null))(_sc$$1.h2)(_sc$$3.h2)), _sc$$2.h2) }; } break; } default: return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h1, Lib_Elab_collectDecl(_sc$$0.h2)) }; } break; } default: return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h1, Lib_Elab_collectDecl(_sc$$0.h2)) }; } break; } default: return { tag: "return", h0: Prelude__$3A$3A_(null, _sc$$0.h1, Lib_Elab_collectDecl(_sc$$0.h2)) }; } break; } case "Nil": return { tag: "return", h0: Prelude_Nil(null) }; } }; const Lib_Elab_collectDecl = ( _$$0 ) => (bouncer(Lib_Elab_REC_collectDecl, { tag: "Lib.Elab.collectDecl", h0: _$$0 })); -const Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl$2CgetFC = ( _$$0 ) => { switch (_$$0.tag) { case "Record": return _$$0.h0; case "Instance": return _$$0.h0; case "Class": return _$$0.h0; case "PMixFix": return _$$0.h0; case "PFunc": return _$$0.h0; case "PType": return _$$0.h0; case "ShortData": return _$$0.h0; case "Data": return _$$0.h0; case "DCheck": return _$$0.h0; case "Def": return _$$0.h0; case "TypeSig": return _$$0.h0; } }; +const Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl$2CgetFC = ( _$$0 ) => { switch (_$$0.tag) { case "Record": return _$$0.h0; case "Instance": return _$$0.h0; case "Class": return _$$0.h0; case "PMixFix": return _$$0.h0; case "PFunc": return _$$0.h0; case "PType": return _$$0.h0; case "ShortData": return _$$0.h0; case "Data": return _$$0.h0; case "DCheck": return _$$0.h0; case "FunDef": return _$$0.h0; case "TypeSig": return _$$0.h0; } }; const Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl = Lib_Common_MkHasFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl$2CgetFC); const Lib_Elab_makeClause = ( _$$0 ) => { const sc$$5 = Lib_Elab_splitArgs(_$$0.h2, Prelude_Nil(null)); 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)(Lib_Elab_mkPat)(sc$$5.h3), ( pats ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_MkClause(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(_$$0.h2), Prelude_Nil(null), pats, _$$0.h3)))); }; const Prelude_unless = ( f$$0, _$$1, _$$2, _$$3 ) => (Prelude_when(null, _$$1, Prelude_not(_$$2), _$$3)); -const Lib_Elab_checkWhere = ( _$$0, _$$1, _$$2, _$$3 ) => { switch (_$$1.tag) { case "_::_": { const _sc$$0 = _$$1.h1; switch (_sc$$0.tag) { case "TypeSig": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "_::_": { const _sc$$2 = _sc$$1.h2; switch (_sc$$2.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(_$$0, _sc$$0.h2, Lib_Types_VU(_sc$$0.h0)), ( funTy ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("where clause ")(_sc$$1.h1))(" : "))(Lib_Elab_rpprint(Lib_Types_names(_$$0), funTy)))(""))), ( _ ) => { const _sc$$3 = _$$1.h2; switch (_sc$$3.tag) { case "_::_": { const _sc$$4 = _sc$$3.h1; switch (_sc$$4.tag) { case "Def": 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$$1.h1)(_sc$$4.h1), ( _1 ) => (Lib_Types_error(null, _sc$$4.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Expected def for ")(_sc$$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, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(Lib_Elab_makeClause)(_sc$$4.h2), ( clauses$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_$$0), "CBN", funTy), ( vty ) => (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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(_sc$$1.h1))(" vty is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(vty)))(""))), ( _2 ) => { const ctx$27 = Lib_Types_extend(_$$0, _sc$$1.h1, vty); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildTree(Lib_Types_withPos(ctx$27, _sc$$4.h0), Lib_Elab_MkProb(clauses$27, vty)), ( tm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(ctx$27), "CBN", tm), ( vtm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_checkWhere(ctx$27, _sc$$3.h2, _$$2, _$$3), ( ty$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_LetRec(_sc$$0.h0, _sc$$1.h1, funTy, tm, ty$27)))))))); }))))))))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(_sc$$3.h1), "expected function definition"); } break; } default: return Lib_Types_error(null, _sc$$0.h0, "expected function definition after this signature"); } }))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(_$$1.h1), "expected type signature"); } break; } default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(_$$1.h1), "expected type signature"); } break; } default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(_$$1.h1), "expected type signature"); } break; } default: return Lib_Elab_check(_$$0, _$$2, _$$3); } }; +const Lib_Elab_checkWhere = ( _$$0, _$$1, _$$2, _$$3 ) => { switch (_$$1.tag) { case "_::_": { const _sc$$0 = _$$1.h1; switch (_sc$$0.tag) { case "TypeSig": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "_::_": { const _sc$$2 = _sc$$1.h2; switch (_sc$$2.tag) { case "Nil": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(_$$0, _sc$$0.h2, Lib_Types_VU(_sc$$0.h0)), ( funTy ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("where clause ")(_sc$$1.h1))(" : "))(Lib_Elab_rpprint(Lib_Types_names(_$$0), funTy)))(""))), ( _ ) => { const _sc$$3 = _$$1.h2; switch (_sc$$3.tag) { case "_::_": { const _sc$$4 = _sc$$3.h1; switch (_sc$$4.tag) { case "FunDef": 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$$1.h1)(_sc$$4.h1), ( _1 ) => (Lib_Types_error(null, _sc$$4.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Expected def for ")(_sc$$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, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(Lib_Elab_makeClause)(_sc$$4.h2), ( clauses$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_$$0), "CBN", funTy), ( vty ) => (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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(_sc$$1.h1))(" vty is "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(vty)))(""))), ( _2 ) => { const ctx$27 = Lib_Types_extend(_$$0, _sc$$1.h1, vty); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildTree(Lib_Types_withPos(ctx$27, _sc$$4.h0), Lib_Elab_MkProb(clauses$27, vty)), ( tm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(ctx$27), "CBN", tm), ( vtm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_checkWhere(ctx$27, _sc$$3.h2, _$$2, _$$3), ( ty$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_LetRec(_sc$$0.h0, _sc$$1.h1, funTy, tm, ty$27)))))))); }))))))))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(_sc$$3.h1), "expected function definition"); } break; } default: return Lib_Types_error(null, _sc$$0.h0, "expected function definition after this signature"); } }))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(_$$1.h1), "expected type signature"); } break; } default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(_$$1.h1), "expected type signature"); } break; } default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl)(_$$1.h1), "expected type signature"); } break; } default: return Lib_Elab_check(_$$0, _$$2, _$$3); } }; const Lib_Elab_check = ( _$$0, _$$1, _$$2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_forceType(Lib_Types__env(_$$0), _$$2), ( ty$27 ) => { const sc$$4 = Prelude__$2C_(null, null, _$$1, ty$27); const _sc$$0 = sc$$4.h2; switch (_sc$$0.tag) { case "RWhere": return Lib_Elab_checkWhere(_$$0, Lib_Elab_collectDecl(_sc$$0.h1), _sc$$0.h2, sc$$4.h3); case "RIf": { const tm$27 = Lib_Syntax_RCase(_sc$$0.h0, _sc$$0.h1, Prelude__$3A$3A_(null, Lib_Syntax_MkAlt(Lib_Syntax_RVar(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(_sc$$0.h2), "True"), _sc$$0.h2), Prelude__$3A$3A_(null, Lib_Syntax_MkAlt(Lib_Syntax_RVar(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(_sc$$0.h3), "False"), _sc$$0.h3), Prelude_Nil(null)))); return Lib_Elab_check(_$$0, tm$27, sc$$4.h3); break; } case "RDo": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_undo(_sc$$0.h0, _sc$$0.h1), ( stmts$27 ) => (Lib_Elab_check(_$$0, stmts$27, sc$$4.h3))); case "RHole": return Lib_Elab_freshMeta(_$$0, _sc$$0.h0, sc$$4.h3, "User"); case "RImplicit": return Lib_Elab_freshMeta(_$$0, _sc$$0.h0, sc$$4.h3, "Normal"); case "RCase": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_infer(_$$0, _sc$$0.h1), ( $$sc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_forceMeta($$sc.h3), ( scty ) => (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)("SCTM ")(Lib_Elab_rpprint(Lib_Types_names(_$$0), $$sc.h2)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("SCTY ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(scty)))(""))), ( _1 ) => { const scnm = Lib_Elab_fresh(_$$0, "sc"); 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, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _sc$$0.h2, ( $$case ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_mkPat(Prelude__$2C_(null, null, $$case.h0, "Explicit")), ( pat$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Syntax_MkClause(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)($$case.h0), Prelude__$3A$3A_(null, Prelude__$2C_(null, null, scnm, pat$27), Prelude_Nil(null)), Prelude_Nil(null), $$case.h1)))))), ( clauses ) => { const ctx$27 = Lib_Types_withPos(Lib_Types_extend(_$$0, scnm, scty), Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(_$$1)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_buildTree(ctx$27, Lib_Elab_MkProb(clauses, sc$$4.h3)), ( tree ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Let(_sc$$0.h0, scnm, $$sc.h2, tree)))); }))); }))))))); case "RLet": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(_$$0, _sc$$0.h2, Lib_Types_VU(Lib_Common_emptyFC)), ( ty$271 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_$$0), "CBN", ty$271), ( vty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(_$$0, _sc$$0.h3, vty), ( v$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Lib_Types__env(_$$0), "CBN", v$27), ( vv ) => { const ctx$27 = Lib_Types_define(_$$0, _sc$$0.h1, vv, vty); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(ctx$27, _sc$$0.h4, sc$$4.h3), ( sc$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Let(_sc$$0.h0, _sc$$0.h1, v$27, sc$27)))); }))))))); case "RLam": { const _sc$$1 = _sc$$0.h1; const _sc$$2 = sc$$4.h3; switch (_sc$$2.tag) { case "VPi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("icits ")(_sc$$1.h1))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Icit)(_sc$$1.h2)))(" "))(_sc$$2.h1))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Icit)(_sc$$2.h2)))(""))), ( _ ) => { const sc$$23 = Prelude__$3D$3D_(null, Lib_Types_Prelude_Eq$20Lib_Types_Icit)(_sc$$1.h2)(_sc$$2.h2); switch (sc$$23) { case "False": { const sc$$24 = Prelude__$2F$3D_(null, Lib_Types_Prelude_Eq$20Lib_Types_Icit, _sc$$2.h2, "Explicit"); switch (sc$$24) { case "False": return Lib_Types_error(null, _sc$$0.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)("Icity issue checking ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(sc$$4.h2)))(" at "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(sc$$4.h3)))("")); case "True": { const $var = Lib_Types_VVar(_sc$$0.h0, Prelude_length$27(null, Lib_Types__env(_$$0)), Prelude_Lin(null)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_sc$$2.h5, $var), ( ty$271 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_extend(_$$0, _sc$$2.h1, _sc$$2.h4), sc$$4.h2, ty$271), ( sc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Lam(_sc$$0.h0, _sc$$2.h1, _sc$$1.h2, _sc$$2.h3, sc)))))); break; } } break; } case "True": { const $var = Lib_Types_VVar(_sc$$0.h0, Prelude_length$27(null, Lib_Types__env(_$$0)), Prelude_Lin(null)); const ctx$27 = Lib_Types_extend(_$$0, _sc$$1.h1, _sc$$2.h4); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_sc$$2.h5, $var), ( bapp ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(ctx$27, _sc$$0.h2, bapp), ( tm$27 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Lam(_sc$$0.h0, _sc$$1.h1, _sc$$1.h2, _sc$$2.h3, tm$27)))))); break; } } }); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_prvalCtx(_$$0, sc$$4.h3), ( pty ) => (Lib_Types_error(null, _sc$$1.h0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Expected pi type, got ")(pty))("")))); } break; } default: { const _sc$$1 = sc$$4.h3; switch (_sc$$1.tag) { case "VPi": { const _sc$$2 = _sc$$1.h2; switch (_sc$$2) { case "Auto": { const names = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(Lib_Types__types(_$$0)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("XXX edge case add auto lambda {")(_sc$$1.h1))(" : "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$1.h4)))("} to "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(sc$$4.h2)))(" "))), ( _ ) => { const $var = Lib_Types_VVar(_sc$$1.h0, Prelude_length$27(null, Lib_Types__env(_$$0)), Prelude_Lin(null)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_sc$$1.h5, $var), ( ty$271 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debugM(Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_prvalCtx(Lib_Types_extend(_$$0, _sc$$1.h1, _sc$$1.h4), ty$271), ( pty$27 ) => (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)("XXX ty' is ")(pty$27))(""))))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_extend(_$$0, _sc$$1.h1, _sc$$1.h4), sc$$4.h2, ty$271), ( sc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Lam(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(sc$$4.h2), _sc$$1.h1, "Auto", _sc$$1.h3, sc)))))))); }); break; } case "Implicit": { const names = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(Lib_Types__types(_$$0)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("XXX edge case add implicit lambda {")(_sc$$1.h1))(" : "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_sc$$1.h4)))("} to "))(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(sc$$4.h2)))(" "))), ( _ ) => { const $var = Lib_Types_VVar(_sc$$1.h0, Prelude_length$27(null, Lib_Types__env(_$$0)), Prelude_Lin(null)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_sc$$1.h5, $var), ( ty$271 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debugM(Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_prvalCtx(Lib_Types_extend(_$$0, _sc$$1.h1, _sc$$1.h4), ty$271), ( pty$27 ) => (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)("XXX ty' is ")(pty$27))(""))))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_extend(_$$0, _sc$$1.h1, _sc$$1.h4), sc$$4.h2, ty$271), ( sc ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Lam(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(sc$$4.h2), _sc$$1.h1, "Implicit", _sc$$1.h3, sc)))))))); }); break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_infer(_$$0, sc$$4.h2), ( $$sc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_insert(_$$0, $$sc.h2, $$sc.h3), ( $$sc1 ) => { const names = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(Lib_Types__types(_$$0)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("INFER ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(sc$$4.h2)))(" to ("))(Lib_Elab_rpprint(names, $$sc1.h2)))(" : "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)($$sc1.h3)))(") expect "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(sc$$4.h3)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_unifyCatch(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(sc$$4.h2), _$$0, $$sc1.h3, sc$$4.h3), ( _1 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc1.h2))))); }))); } break; } default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_infer(_$$0, sc$$4.h2), ( $$sc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_insert(_$$0, $$sc.h2, $$sc.h3), ( $$sc1 ) => { const names = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Prelude_fst(null, null, eta)))(Lib_Types__types(_$$0)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("INFER ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(sc$$4.h2)))(" to ("))(Lib_Elab_rpprint(names, $$sc1.h2)))(" : "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)($$sc1.h3)))(") expect "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(sc$$4.h3)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_unifyCatch(Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(sc$$4.h2), _$$0, $$sc1.h3, sc$$4.h3), ( _1 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)($$sc1.h2))))); }))); } break; } } })); const Lib_Util_MkBinder = ( h0, h1, h2, h3, h4 ) => ({ tag: "MkBinder", h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); const Lib_Util_REC_splitTele_go = ( arg ) => { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "Pi": return { tag: "Lib.Util.splitTele.go", h0: arg.h0, h1: Prelude__$3A$3A_(null, Lib_Util_MkBinder(_sc$$0.h0, _sc$$0.h1, _sc$$0.h2, _sc$$0.h3, _sc$$0.h4), arg.h1), h2: _sc$$0.h5 }; default: return { tag: "return", h0: Prelude__$2C_(null, null, arg.h2, Prelude_reverse(null)(arg.h1)) }; } }; const Lib_Util_splitTele_go = ( _, _$$1, _$$2 ) => (bouncer(Lib_Util_REC_splitTele_go, { tag: "Lib.Util.splitTele.go", h0: _, h1: _$$1, h2: _$$2 })); const Lib_Util_splitTele = ( eta ) => (Lib_Util_splitTele_go(null, Prelude_Nil(null), eta)); -const Lib_Elab_REC_findMatches = ( arg ) => { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const sc$$10 = Lib_Elab_isCandidate(arg.h1, _sc$$1.h2); switch (sc$$10) { case "False": return { tag: "Lib.Elab.findMatches", h0: arg.h0, h1: arg.h1, h2: _sc$$0.h2 }; case "True": return { tag: "return", h0: 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 fc = Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(arg.h1); return Lib_Types_catchError(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TRY ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$1.h1)))(" : "))(Lib_Elab_rpprint(Prelude_Nil(null), _sc$$1.h2)))(" for "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(""))), ( _ ) => { const _sc$$2 = _sc$$1.h1; const sc$$18 = Lib_Util_splitTele(_sc$$1.h2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_modifyIORef(null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), ( mc1 ) => (Lib_Types_MC(Lib_Types__metas(mc1), Lib_Types__next(mc1), "CheckFirst"))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(arg.h0, Lib_Syntax_RVar(fc, _sc$$2.h1), arg.h1), ( tm ) => (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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Found ")(Lib_Elab_rpprint(Prelude_Nil(null), tm)))(" for "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_writeIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), mc), ( _3 ) => (Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude__$3A$3A_(null, _sc$$2.h1, eta)), Lib_Elab_findMatches(arg.h0, arg.h1, _sc$$0.h2)))))))))); }), ( err ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("No match ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(" "))(Lib_Elab_rpprint(Prelude_Nil(null), _sc$$1.h2)))(" "))(Lib_Common_showError("", err)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_writeIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), mc), ( _1 ) => (Lib_Elab_findMatches(arg.h0, arg.h1, _sc$$0.h2))))))); }))) }; } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nil(null)) }; } }; +const Lib_Elab_REC_findMatches = ( arg ) => { const _sc$$0 = arg.h2; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const sc$$11 = Lib_Elab_isCandidate(arg.h1, _sc$$1.h2); switch (sc$$11) { case "False": return { tag: "Lib.Elab.findMatches", h0: arg.h0, h1: arg.h1, h2: _sc$$0.h2 }; case "True": return { tag: "return", h0: 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 fc = Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)(arg.h1); return Lib_Types_catchError(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("TRY ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$1.h1)))(" : "))(Lib_Elab_rpprint(Prelude_Nil(null), _sc$$1.h2)))(" for "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(""))), ( _ ) => { const _sc$$2 = _sc$$1.h1; const sc$$19 = Lib_Util_splitTele(_sc$$1.h2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_modifyIORef(null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), ( mc1 ) => (Lib_Types_MC(Lib_Types__metas(mc1), Lib_Types__next(mc1), "CheckFirst"))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(arg.h0, Lib_Syntax_RVar(fc, _sc$$2.h1), arg.h1), ( tm ) => (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)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Found ")(Lib_Elab_rpprint(Prelude_Nil(null), tm)))(" for "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_writeIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), mc), ( _3 ) => (Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude__$3A$3A_(null, _sc$$2.h1, eta)), Lib_Elab_findMatches(arg.h0, arg.h1, _sc$$0.h2)))))))))); }), ( err ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _ ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("No match ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(arg.h1)))(" "))(Lib_Elab_rpprint(Prelude_Nil(null), _sc$$1.h2)))(" "))(Lib_Common_showError("", err)))(""))), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Data_IORef_writeIORef(null, null, Lib_Types_Prelude_HasIO$20Lib_Types_M, Lib_Types__metaCtx(top), mc), ( _1 ) => (Lib_Elab_findMatches(arg.h0, arg.h1, _sc$$0.h2))))))); }))) }; } break; } case "Nil": return { tag: "return", h0: Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nil(null)) }; } }; const Lib_Elab_findMatches = ( _$$0, _$$1, _$$2 ) => (bouncer(Lib_Elab_REC_findMatches, { tag: "Lib.Elab.findMatches", h0: _$$0, h1: _$$1, h2: _$$2 })); const Lib_ProcessDecl_dumpEnv_isVar = ( _, _1, _$$2, _$$3 ) => { switch (_$$3.tag) { case "VVar": { const _sc$$0 = _$$3.h2; switch (_sc$$0.tag) { case "Lin": return Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_Int)(_$$2)(_$$3.h1); default: return "False"; } break; } default: return "False"; } }; const Lib_ProcessDecl_dumpEnv_isVar_go = ( _, _1, _2, _$$3, _$$4, _$$5, _$$6 ) => { switch (_$$5.tag) { case "_::_": { const _sc$$0 = _$$5.h1; const _sc$$1 = _sc$$0.h3; const sc$$18 = Lib_ProcessDecl_dumpEnv_isVar(_, _1, _$$4, _sc$$0.h2); switch (sc$$18) { case "False": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_), _sc$$0.h2), ( v$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_), _sc$$1.h3), ( ty$27 ) => (Lib_ProcessDecl_dumpEnv_isVar_go(_, _1, _2, _$$3, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(_$$4), _$$5.h2, 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__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(" ")(_sc$$1.h2))(" = "))(Lib_Prettier_render(90, Lib_Types_pprint(_$$3, v$27))))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(_$$3, ty$27))))(""), _$$6)))))); case "True": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_quote(Lib_Types__lvl(_), _sc$$1.h3), ( ty$27 ) => (Lib_ProcessDecl_dumpEnv_isVar_go(_, _1, _2, _$$3, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(_$$4), _$$5.h2, 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)(" ")(_sc$$1.h2))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(_$$3, ty$27))))(""), _$$6)))); } break; } case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$6); } }; @@ -871,8 +872,8 @@ const Serialize_dumpModule = ( _$$0, _$$1, _$$2 ) => { const fn = Prelude__$2B$2 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 }); -const Lib_TopContext_setDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$5 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__defs(top)); switch (sc$$5.tag) { case "Nothing": return Lib_Types_modifyTop(( $$case ) => { const defs = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types_MkEntry(_$$1, _$$0, _$$2, _$$3), Lib_Types__defs(top)); return Lib_Types_MkTop($$case.h0, $$case.h1, $$case.h2, defs, $$case.h4, $$case.h5, $$case.h6, $$case.h7); }); case "Just": { const _sc$$0 = sc$$5.h1; return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))(" is already defined at "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_sc$$0.h0)))("")); break; } } })); +const Lib_Types_MkEntry = ( h0, h1, h2, h3, h4 ) => ({ tag: "MkEntry", h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); +const Lib_TopContext_setDef = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$6 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__defs(top)); switch (sc$$6.tag) { case "Nothing": return Lib_Types_modifyTop(( $$case ) => { const defs = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types_MkEntry(_$$1, _$$0, _$$2, _$$3, _$$4), Lib_Types__defs(top)); return Lib_Types_MkTop($$case.h0, $$case.h1, $$case.h2, defs, $$case.h4, $$case.h5, $$case.h6, $$case.h7); }); case "Just": { const _sc$$0 = sc$$6.h1; return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))(" is already defined at "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(_sc$$0.h0)))("")); break; } } })); const Lib_Eval_REC_appSpine = ( arg ) => { const _sc$$0 = arg.h1; switch (_sc$$0.tag) { case "_::_": return { tag: "Lib.Eval.appSpine", h0: Lib_Types_App(Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(arg.h0), arg.h0, _sc$$0.h1), h1: _sc$$0.h2 }; case "Nil": return { tag: "return", h0: arg.h0 }; } }; const Lib_Eval_appSpine = ( _$$0, _$$1 ) => (bouncer(Lib_Eval_REC_appSpine, { tag: "Lib.Eval.appSpine", h0: _$$0, h1: _$$1 })); const Lib_Eval_tweakFC = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Erased": return Lib_Types_Erased(_$$0); case "Lit": return Lib_Types_Lit(_$$0, _$$1.h1); case "LetRec": return Lib_Types_LetRec(_$$0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case "Let": return Lib_Types_Let(_$$0, _$$1.h1, _$$1.h2, _$$1.h3); case "Case": return Lib_Types_Case(_$$0, _$$1.h1, _$$1.h2); case "Pi": return Lib_Types_Pi(_$$0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4, _$$1.h5); case "UU": return Lib_Types_UU(_$$0); case "App": return Lib_Types_App(_$$0, _$$1.h1, _$$1.h2); case "Lam": return Lib_Types_Lam(_$$0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case "Meta": return Lib_Types_Meta(_$$0, _$$1.h1); case "Ref": return Lib_Types_Ref(_$$0, _$$1.h1); case "Bnd": return Lib_Types_Bnd(_$$0, _$$1.h1); } }; @@ -884,8 +885,9 @@ const Lib_Eval_zonkAlt = ( _$$0, _$$1, _$$2, _$$3 ) => { switch (_$$3.tag) { cas const Lib_Eval_zonk = ( _$$0, _$$1, _$$2, _$$3 ) => { switch (_$$3.tag) { case "Erased": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Erased(_$$3.h0)); case "Lit": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Lit(_$$3.h0, _$$3.h1)); case "LetRec": return Prelude__$3C$2A$3E_(null, Lib_Types_Prelude_Applicative$20Lib_Types_M)(null)(null)(Prelude__$3C$2A$3E_(null, Lib_Types_Prelude_Applicative$20Lib_Types_M)(null)(null)(Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (( eta1 ) => (( eta2 ) => (Lib_Types_LetRec(_$$3.h0, _$$3.h1, eta, eta1, eta2)))), Lib_Eval_zonk(_$$0, _$$1, _$$2, _$$3.h2)))(Lib_Eval_zonkBind(_$$0, _$$1, _$$2, _$$3.h3)))(Lib_Eval_zonkBind(_$$0, _$$1, _$$2, _$$3.h4)); case "Let": return Prelude__$3C$2A$3E_(null, Lib_Types_Prelude_Applicative$20Lib_Types_M)(null)(null)(Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (( eta1 ) => (Lib_Types_Let(_$$3.h0, _$$3.h1, eta, eta1))), Lib_Eval_zonk(_$$0, _$$1, _$$2, _$$3.h2)))(Lib_Eval_zonkBind(_$$0, _$$1, _$$2, _$$3.h3)); case "Case": return Prelude__$3C$2A$3E_(null, Lib_Types_Prelude_Applicative$20Lib_Types_M)(null)(null)(Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (( eta1 ) => (Lib_Types_Case(_$$3.h0, eta, eta1))), Lib_Eval_zonk(_$$0, _$$1, _$$2, _$$3.h1)))(Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Eval_zonkAlt(_$$0, _$$1, _$$2, eta)))(_$$3.h2)); case "Pi": return Prelude__$3C$2A$3E_(null, Lib_Types_Prelude_Applicative$20Lib_Types_M)(null)(null)(Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (( eta1 ) => (Lib_Types_Pi(_$$3.h0, _$$3.h1, _$$3.h2, _$$3.h3, eta, eta1))), Lib_Eval_zonk(_$$0, _$$1, _$$2, _$$3.h4)))(Lib_Eval_zonkBind(_$$0, _$$1, _$$2, _$$3.h5)); case "UU": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_UU(_$$3.h0)); case "App": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_zonk(_$$0, _$$1, _$$2, _$$3.h2), ( u$27 ) => (Lib_Eval_zonkApp(_$$0, _$$1, _$$2, _$$3.h1, Prelude__$3A$3A_(null, u$27, Prelude_Nil(null))))); case "Lam": return Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_Types_Lam(_$$3.h0, _$$3.h1, _$$3.h2, _$$3.h3, eta)), Lib_Eval_zonk(_$$0, Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(_$$1), Prelude__$3A$3A_(null, Lib_Types_VVar(_$$3.h0, _$$1, Prelude_Lin(null)), _$$2), _$$3.h4)); case "Meta": return Lib_Eval_zonkApp(_$$0, _$$1, _$$2, _$$3, Prelude_Nil(null)); case "Ref": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Ref(_$$3.h0, _$$3.h1)); case "Bnd": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types_Bnd(_$$3.h0, _$$3.h1)); } }; const Lib_Types_mkCtx = ( _$$0 ) => (Lib_Types_MkCtx(0, Prelude_Nil(null), Prelude_Nil(null), Prelude_Nil(null), _$$0)); const Lib_Types__fc = ( _$$0 ) => (_$$0.h0); -const Lib_ProcessDecl_processTypeSig = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_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, _$$2, ( nm ) => { const sc$$8 = Lib_TopContext_lookupRaw(nm, top); switch (sc$$8.tag) { case "Nothing": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "Just": return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$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$$8.h1))))("")); } }), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$3, Lib_Types_VU(_$$1)), ( 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(_$$2)))(" : "))(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, _$$2, ( nm ) => (Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm), _$$1, ty1, Lib_Types_Axiom))))))))))))))))))); -const Lib_TopContext_updateDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$5 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__defs(top)); switch (sc$$5.tag) { case "Nothing": return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))(" not declared")); case "Just": { const _sc$$0 = sc$$5.h1; return Lib_Types_modifyTop(( $$case ) => { const defs = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types_MkEntry(_sc$$0.h0, _$$0, _$$2, _$$3), $$case.h3); return Lib_Types_MkTop($$case.h0, $$case.h1, $$case.h2, defs, $$case.h4, $$case.h5, $$case.h6, $$case.h7); }); break; } } })); +const Lib_ProcessDecl_checkAlreadyDef = ( _$$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_lookupRaw(_$$1, top); switch (sc$$3.tag) { case "Nothing": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "Just": return Lib_Types_error(null, _$$0, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$1)))(" is already defined at "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Types__fc(sc$$3.h1))))("")); } })); +const Lib_ProcessDecl_processTypeSig = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_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_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_ProcessDecl_checkAlreadyDef(_$$1, eta)))(_$$2), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$3, Lib_Types_VU(_$$1)), ( 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(_$$2)))(" : "))(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, _$$2, ( nm ) => (Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm), _$$1, ty1, Lib_Types_Axiom, Prelude_Nil(null)))))))))))))))))))); +const Lib_TopContext_updateDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$5 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__defs(top)); switch (sc$$5.tag) { case "Nothing": return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))(" not declared")); case "Just": { const _sc$$0 = sc$$5.h1; return Lib_Types_modifyTop(( $$case ) => { const defs = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types_MkEntry(_sc$$0.h0, _$$0, _$$2, _$$3, _sc$$0.h4), $$case.h3); return Lib_Types_MkTop($$case.h0, $$case.h1, $$case.h2, defs, $$case.h4, $$case.h5, $$case.h6, $$case.h7); }); break; } } })); const Lib_ProcessDecl_processDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Def ")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$2)))(""))), ( _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$$8 = Lib_TopContext_lookupRaw(_$$2, top); switch (sc$$8.tag) { case "Nothing": return Lib_Types_throwError(null, Lib_Common_E(_$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("No declaration for ")(_$$2))(""))); case "Just": { const _sc$$0 = sc$$8.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 ")(_$$2))(" 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), "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)("")(_$$2))(" 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)(_$$3), ( 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 ")(_$$2))(" "))(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, _$$2), _sc$$0.h0, _sc$$0.h2, Lib_Types_Fn(tm$27)))))))))))))))))))))); default: return Lib_Types_throwError(null, Lib_Common_E(_$$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)("")(_$$2))(" already defined at "))(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_FC)(Lib_Types__fc(sc$$8.h1))))(""))); } break; } } })))))))); const Lib_Eval_nfv = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(_$$0, "CBV", _$$1), ( eta ) => (Lib_Eval_quote(Prelude_length$27(null, _$$0), eta)))); const Lib_Eval_nf = ( _$$0, _$$1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(_$$0, "CBN", _$$1), ( eta ) => (Lib_Eval_quote(Prelude_length$27(null, _$$0), eta)))); @@ -894,17 +896,17 @@ const Lib_Types_TCon = ( h0, h1 ) => ({ tag: "TCon", h0: h0, h1: h1 }); const Lib_Util_piArity = ( _$$0 ) => { switch (_$$0.tag) { case "Pi": return Prelude_S(Lib_Util_piArity(_$$0.h5)); default: return Prelude_Z; } }; const Lib_Types__name = ( _$$0 ) => (_$$0.h1); const Lib_Types_DCon = ( h0, h1, h2 ) => ({ tag: "DCon", h0: h0, h1: h1, h2: h2 }); -const Lib_ProcessDecl_populateConInfo_setInfo = ( _, _1, _$$2, _$$3 ) => { const _sc$$0 = _$$2.h3; switch (_sc$$0.tag) { case "DCon": return Lib_Types_MkEntry(_$$2.h0, _$$2.h1, _$$2.h2, Lib_Types_DCon(_$$3, _sc$$0.h1, _sc$$0.h2)); default: return _$$2; } }; +const Lib_ProcessDecl_populateConInfo_setInfo = ( _, _1, _$$2, _$$3 ) => { const _sc$$0 = _$$2.h3; switch (_sc$$0.tag) { case "DCon": return Lib_Types_MkEntry(_$$2.h0, _$$2.h1, _$$2.h2, Lib_Types_DCon(_$$3, _sc$$0.h1, _sc$$0.h2), _$$2.h4); default: return _$$2; } }; const Lib_ProcessDecl_populateConInfo_setInfo_checkEnum_isZero = ( _, _1, _2, _3, _$$4 ) => { const _sc$$0 = _$$4.h3; switch (_sc$$0.tag) { case "DCon": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1) { case 0: return "True"; default: return "False"; } break; } default: return "False"; } }; const Lib_ProcessDecl_populateConInfo_setInfo_checkEnum_isZero_isSucc = ( _, _1, _2, _3, _4, _$$5 ) => { const _sc$$0 = _$$5.h2; switch (_sc$$0.tag) { case "Pi": { const _sc$$1 = _sc$$0.h4; switch (_sc$$1.tag) { case "Ref": { const _sc$$2 = _sc$$0.h5; switch (_sc$$2.tag) { case "Ref": { const _sc$$3 = _$$5.h3; switch (_sc$$3.tag) { case "DCon": { const _sc$$4 = _sc$$3.h1; switch (_sc$$4) { case 1: return Prelude__$3D$3D_(null, Lib_Common_Prelude_Eq$20Lib_Common_QName)(_sc$$1.h1)(_sc$$2.h1); default: return "False"; } break; } default: return "False"; } break; } default: return "False"; } break; } default: return "False"; } break; } default: return "False"; } }; -const Lib_ProcessDecl_populateConInfo_setInfo_checkEnum = ( _, _1, _2, _$$3 ) => { const _sc$$0 = _$$3.h3; switch (_sc$$0.tag) { case "DCon": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1) { case 0: return Prelude_Just(null, Lib_Types_MkEntry(_$$3.h0, _$$3.h1, _$$3.h2, Lib_Types_DCon("EnumCon", 0, _sc$$0.h2))); default: return Prelude_Nothing(null); } break; } default: return Prelude_Nothing(null); } }; +const Lib_ProcessDecl_populateConInfo_setInfo_checkEnum = ( _, _1, _2, _$$3 ) => { const _sc$$0 = _$$3.h3; switch (_sc$$0.tag) { case "DCon": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1) { case 0: return Prelude_Just(null, Lib_Types_MkEntry(_$$3.h0, _$$3.h1, _$$3.h2, Lib_Types_DCon("EnumCon", 0, _sc$$0.h2), _$$3.h4)); default: return Prelude_Nothing(null); } break; } default: return Prelude_Nothing(null); } }; const Prelude_Prelude_Applicative$20Prelude_Maybe$2C_$3C$2A$3E_ = ( a$$0, b$$1, _$$2, _$$3 ) => { switch (_$$2.tag) { case "Nothing": return Prelude_Nothing(null); case "Just": return Prelude__$3C$$$3E_(null, Prelude_Prelude_Functor$20Prelude_Maybe, null, null, _$$2.h1, _$$3); } }; const Prelude_Prelude_Applicative$20Prelude_Maybe$2Creturn = ( a$$0, _$$1 ) => (Prelude_Just(null, _$$1)); const Prelude_Prelude_Applicative$20Prelude_Maybe = Prelude_MkApplicative(null, ( a ) => (( eta ) => (Prelude_Prelude_Applicative$20Prelude_Maybe$2Creturn(null, eta))), ( a ) => (( b ) => (( eta ) => (( eta1 ) => (Prelude_Prelude_Applicative$20Prelude_Maybe$2C_$3C$2A$3E_(null, null, eta, eta1)))))); const Lib_ProcessDecl_populateConInfo = ( _$$0 ) => { const sc$$5 = Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Prelude_Prelude_Applicative$20Prelude_Maybe)(( eta ) => (Lib_ProcessDecl_populateConInfo_setInfo_checkEnum(_$$0, null, null, eta)))(_$$0); switch (sc$$5.tag) { case "Nothing": switch (_$$0.tag) { case "_::_": { const _sc$$0 = _$$0.h2; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h2; switch (_sc$$1.tag) { case "Nil": { const sc$$15 = Prelude_find(null, ( eta ) => (Lib_ProcessDecl_populateConInfo_setInfo_checkEnum_isZero_isSucc(_$$0, null, null, null, null, eta)), _$$0); switch (sc$$15.tag) { case "Just": { const sc$$18 = Prelude_find(null, ( eta ) => (Lib_ProcessDecl_populateConInfo_setInfo_checkEnum_isZero(_$$0, null, null, null, eta)), _$$0); switch (sc$$18.tag) { case "Just": return Prelude__$3A$3A_(null, Lib_ProcessDecl_populateConInfo_setInfo(_$$0, null, sc$$18.h1, "ZeroCon"), Prelude__$3A$3A_(null, Lib_ProcessDecl_populateConInfo_setInfo(_$$0, null, sc$$15.h1, "SuccCon"), Prelude_Nil(null))); default: return _$$0; } break; } default: return _$$0; } break; } default: return _$$0; } break; } default: return _$$0; } break; } default: return _$$0; } break; case "Just": return sc$$5.h1; } }; const Lib_Elab_getArity = ( _$$0 ) => { switch (_$$0.tag) { case "Pi": return Prelude__$2B_(null, Prelude_Prelude_Add$20Prim_Int)(1)(Lib_Elab_getArity(_$$0.h5)); default: return 0; } }; const Lib_ProcessDecl_processData_binderName = ( _, _1, _2, _3, _4, _5, _$$6 ) => (_$$6.h1); -const Lib_ProcessDecl_processData = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (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 ")(_$$2))(""))), ( _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), _$$3, Lib_Types_VU(_$$1)), ( tyty ) => { const sc$$12 = Lib_TopContext_lookupRaw(_$$2, top); switch (sc$$12.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, _$$2), _$$1, tyty, Lib_Types_Axiom), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( 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$$21 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, null, eta)))(sc$$21.h3)); const sc$$27 = Lib_Util_funArgs(sc$$21.h2); const _sc$$0 = sc$$27.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, _$$2)), ( _5 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$21.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$$21.h2))))(" rather than "))(_$$2))("")))), ( _5 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1))))(x.h1)))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$27.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 ")(_$$2))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$27.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")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); 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, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _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)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { 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, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); case "Just": { const _sc$$0 = sc$$12.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), "CBN", tyty), ( tyty$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$0.h2), ( type$27 ) => (Lib_Elab_unifyCatch(_$$1, Lib_Types_mkCtx(_$$1), tyty$27, type$27))))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( 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$$21 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, null, eta)))(sc$$21.h3)); const sc$$27 = Lib_Util_funArgs(sc$$21.h2); const _sc$$0 = sc$$27.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, _$$2)), ( _5 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$21.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$$21.h2))))(" rather than "))(_$$2))("")))), ( _5 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1))))(x.h1)))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$27.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 ")(_$$2))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$27.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")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); 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, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _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)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { 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, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$2)))(" already declared")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( 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$$21 = Lib_Util_splitTele(dty); const tnames = Prelude_reverse(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_ProcessDecl_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, null, eta)))(sc$$21.h3)); const sc$$27 = Lib_Util_funArgs(sc$$21.h2); const _sc$$0 = sc$$27.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, _$$2)), ( _5 ) => (Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$21.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$$21.h2))))(" rather than "))(_$$2))("")))), ( _5 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1))))(x.h1)))); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm)(sc$$27.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 ")(_$$2))(" got "))(Lib_Prettier_render(90, Lib_Types_pprint(tnames, sc$$27.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")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); 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, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _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)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { 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, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); } break; } } })))))))))); +const Lib_ProcessDecl_processData = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (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 ")(_$$2))(""))), ( _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), _$$3, Lib_Types_VU(_$$1)), ( tyty ) => { const sc$$12 = Lib_TopContext_lookupRaw(_$$2, top); switch (sc$$12.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, _$$2), _$$1, tyty, Lib_Types_Axiom, Prelude_Nil(null)), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( x ) => { switch (x.tag) { case "TypeSig": 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_checkAlreadyDef(x.h0, eta)))(x.h1), ( _3 ) => (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)("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)))(""))), ( _4 ) => (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(( _5 ) => (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))))(""))), ( _5 ) => { 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_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, 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, _$$2)), ( _6 ) => (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 "))(_$$2))("")))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1), Prelude_Nil(null))))(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 ")(_$$2))(" 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")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); 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, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3, $$case.h4))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _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)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { 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, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); case "Just": { const _sc$$0 = sc$$12.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), "CBN", tyty), ( tyty$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$0.h2), ( type$27 ) => (Lib_Elab_unifyCatch(_$$1, Lib_Types_mkCtx(_$$1), tyty$27, type$27))))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( x ) => { switch (x.tag) { case "TypeSig": 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_checkAlreadyDef(x.h0, eta)))(x.h1), ( _3 ) => (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)("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)))(""))), ( _4 ) => (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(( _5 ) => (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))))(""))), ( _5 ) => { 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_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, 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, _$$2)), ( _6 ) => (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 "))(_$$2))("")))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1), Prelude_Nil(null))))(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 ")(_$$2))(" 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")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); 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, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3, $$case.h4))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _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)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { 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, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$2)))(" already declared")), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, eta)), Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, _$$4, ( x ) => { switch (x.tag) { case "TypeSig": 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_checkAlreadyDef(x.h0, eta)))(x.h1), ( _3 ) => (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)("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)))(""))), ( _4 ) => (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(( _5 ) => (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))))(""))), ( _5 ) => { 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_processData_binderName(_$$0, _$$1, _$$2, _$$3, _$$4, 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, _$$2)), ( _6 ) => (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 "))(_$$2))("")))), ( _6 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( nm$27 ) => (Lib_Types_MkEntry(x.h0, Lib_Common_QN(_$$0, nm$27), dty, Lib_Types_DCon("NormalCon", Lib_Elab_getArity(dty), _sc$$0.h1), Prelude_Nil(null))))(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 ")(_$$2))(" 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")); } })), ( entries ) => { const entries1 = Lib_ProcessDecl_populateConInfo(entries); 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, entries1, ( $$case ) => (Lib_TopContext_setDef($$case.h1, $$case.h0, $$case.h2, $$case.h3, $$case.h4))), ( _3 ) => { const cnames = Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( x ) => (Lib_Types__name(x)))(entries1); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _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)("setDef ")(_$$2))(" TCon "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(cnames)))(""))), ( _4 ) => { 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, _$$2), _$$1, tyty, Lib_Types_TCon(arity, cnames)); }); }); }))); } break; } } })))))))))); const Lib_Syntax_wrap = ( _$$0, _$$1 ) => { switch (_$$0) { case "Auto": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("{{"))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(_$$1)(Lib_Prettier_text("}}"))); case "Explicit": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(_$$1)(Lib_Prettier_text(")"))); case "Implicit": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("{"))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(_$$1)(Lib_Prettier_text("}"))); } }; const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par = ( _, _1, _$$2, _$$3, _$$4 ) => { const sc$$5 = Prelude__$3C_(null, Prelude_Prelude_Ord$20Prim_Int, _$$3, _$$2); switch (sc$$5) { case "False": return _$$4; case "True": return Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(Lib_Prettier_text("("))(Prelude__$2B$2B_(null, Lib_Prettier_Prelude_Concat$20Lib_Prettier_Doc)(_$$4)(Lib_Prettier_text(")"))); } }; const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Types_Literal$2Cpretty = ( _$$0 ) => { switch (_$$0.tag) { case "LChar": return Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_Char)(_$$0.h0)); case "LInt": return Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$0.h0)); case "LString": return Lib_Prettier_text(_$$0.h0); } }; @@ -921,7 +923,7 @@ const Prelude_maybe = ( a$$0, b$$1, _$$2, _$$3, _$$4 ) => { switch (_$$4.tag) { const Lib_Common_Prelude_Show$20Lib_Common_Fixity$2Cshow = ( _$$0 ) => { switch (_$$0) { case "Infix": return "infix"; case "InfixR": return "infixr"; case "InfixL": return "infixl"; } }; const Lib_Common_Prelude_Show$20Lib_Common_Fixity = Prelude_MkShow(null, Lib_Common_Prelude_Show$20Lib_Common_Fixity$2Cshow); const Lib_Syntax_prettyBind = ( _$$0 ) => { const _sc$$0 = _$$0.h2; return Lib_Syntax_wrap(_sc$$0.h2, Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Quant)(_sc$$0.h3))(_sc$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h3))); }; -const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty = ( _$$0 ) => { switch (_$$0.tag) { case "Record": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("record"))(Lib_Prettier_text(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_spread(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Syntax_prettyBind)(_$$0.h2))))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2F$3E_(Lib_Prettier_text("where"), Lib_Prettier_stack(Prelude__$3A$3A_(null, Prelude_maybe(null, null, Lib_Prettier_empty, ( nm$27 ) => (Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("constructor"))(Lib_Prettier_text(nm$27))), _$$0.h3), Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl))(_$$0.h4)))))); case "Instance": return Lib_Prettier_text("TODO pretty Instance"); case "Class": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("class"))(Lib_Prettier_text(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_spread(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Syntax_prettyBind)(_$$0.h2))))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2F$3E_(Lib_Prettier_text("where"), Lib_Prettier_stack(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl))(_$$0.h3))))); case "PMixFix": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_Fixity)(_$$0.h3)))(Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$0.h2))))(Lib_Prettier_spread(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_text)(_$$0.h1))); case "PFunc": { const _sc$$0 = _$$0.h2; switch (_sc$$0.tag) { case "Nil": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("pfunc"))(Lib_Prettier_text(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2B$2F$3E_(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h3))(Lib_Prettier_text(":=")), Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h4))))); default: return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("pfunc"))(Lib_Prettier_text(_$$0.h1)))(Lib_Prettier_text("uses")))(Lib_Prettier_spread(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_text)(_$$0.h2))))(Lib_Prettier_text(":")))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2B$2F$3E_(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h3))(Lib_Prettier_text(":=")), Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h4))))); } break; } case "PType": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("ptype"))(Lib_Prettier_text(_$$0.h1)))(Prelude_maybe(null, null, Lib_Prettier_empty, ( ty ) => (Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text(":"))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(ty))), _$$0.h2)); case "ShortData": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("data"))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h1)))(Lib_Prettier_text("=")))(Lib_Syntax_pipeSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw))(_$$0.h2))); case "Data": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("data"))(Lib_Prettier_text(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h2)))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2F$3E_(Lib_Prettier_text("where"), Lib_Prettier_stack(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl))(_$$0.h3))))); case "DCheck": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("#check"))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h2)); case "Def": return Lib_Prettier_stack(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty_prettyPair(_$$0, _$$0.h0, _$$0.h1, _$$0.h2, null, eta)))(_$$0.h2)); case "TypeSig": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_spread(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_text)(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_nest(2)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h2))); } }; +const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty = ( _$$0 ) => { switch (_$$0.tag) { case "Record": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("record"))(Lib_Prettier_text(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_spread(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Syntax_prettyBind)(_$$0.h2))))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2F$3E_(Lib_Prettier_text("where"), Lib_Prettier_stack(Prelude__$3A$3A_(null, Prelude_maybe(null, null, Lib_Prettier_empty, ( nm$27 ) => (Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("constructor"))(Lib_Prettier_text(nm$27))), _$$0.h3), Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl))(_$$0.h4)))))); case "Instance": return Lib_Prettier_text("TODO pretty Instance"); case "Class": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("class"))(Lib_Prettier_text(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_spread(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Syntax_prettyBind)(_$$0.h2))))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2F$3E_(Lib_Prettier_text("where"), Lib_Prettier_stack(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl))(_$$0.h3))))); case "PMixFix": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_Fixity)(_$$0.h3)))(Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$0.h2))))(Lib_Prettier_spread(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_text)(_$$0.h1))); case "PFunc": { const _sc$$0 = _$$0.h2; switch (_sc$$0.tag) { case "Nil": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("pfunc"))(Lib_Prettier_text(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2B$2F$3E_(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h3))(Lib_Prettier_text(":=")), Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h4))))); default: return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("pfunc"))(Lib_Prettier_text(_$$0.h1)))(Lib_Prettier_text("uses")))(Lib_Prettier_spread(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_text)(_$$0.h2))))(Lib_Prettier_text(":")))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2B$2F$3E_(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h3))(Lib_Prettier_text(":=")), Lib_Prettier_text(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h4))))); } break; } case "PType": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("ptype"))(Lib_Prettier_text(_$$0.h1)))(Prelude_maybe(null, null, Lib_Prettier_empty, ( ty ) => (Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text(":"))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(ty))), _$$0.h2)); case "ShortData": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("data"))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h1)))(Lib_Prettier_text("=")))(Lib_Syntax_pipeSep(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw))(_$$0.h2))); case "Data": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("data"))(Lib_Prettier_text(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h2)))(Lib_Prettier_nest(2)(Lib_Prettier__$3C$2F$3E_(Lib_Prettier_text("where"), Lib_Prettier_stack(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl))(_$$0.h3))))); case "DCheck": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_text("#check"))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h2)); case "FunDef": return Lib_Prettier_stack(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty_prettyPair(_$$0, _$$0.h0, _$$0.h1, _$$0.h2, null, eta)))(_$$0.h2)); case "TypeSig": return Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Prelude__$3C$2B$3E_(null, Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc)(Lib_Prettier_spread(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Prettier_text)(_$$0.h1)))(Lib_Prettier_text(":")))(Lib_Prettier_nest(2)(Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$0.h2))); } }; const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl = Lib_Prettier_MkPretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty); const Lib_Syntax_Data = ( h0, h1, h2, h3 ) => ({ tag: "Data", h0: h0, h1: h1, h2: h2, h3: h3 }); const Lib_Syntax_TypeSig = ( h0, h1, h2 ) => ({ tag: "TypeSig", h0: h0, h1: h1, h2: h2 }); @@ -936,9 +938,9 @@ const Lib_ProcessDecl_REC_processShortData_mkPi_getArgs = ( arg ) => { const _sc const Lib_ProcessDecl_processShortData_mkPi_getArgs = ( _, _1, _2, _3, _4, _5, _$$6, _$$7 ) => (bouncer(Lib_ProcessDecl_REC_processShortData_mkPi_getArgs, { tag: "Lib.ProcessDecl.processShortData.mkPi.getArgs", h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: _5, h6: _$$6, h7: _$$7 })); const Lib_ProcessDecl_processShortData = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processShortData_mkPi_getArgs(_$$0, _$$1, _$$2, _$$3, null, null, _$$2, Prelude_Nil(null)), ( $$sc ) => { const ty = Prelude_foldr(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processShortData_mkPi(_$$0, _$$1, _$$2, _$$3, null, eta, eta1))), Lib_Syntax_RU(_$$1), $$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_processShortData_mkPi_getArgs_mkDecl(_$$0, _$$1, _$$2, _$$3, null, null, null, $$sc.h3, Prelude_Nil(null), eta)))(_$$3), ( cons ) => { const dataDecl = Lib_Syntax_Data(_$$1, $$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))))); }); })); const Lib_Types_PrimTCon = ( h0 ) => ({ tag: "PrimTCon", h0: h0 }); -const Lib_ProcessDecl_processPrimType = ( _$$0, _$$1, _$$2, _$$3 ) => (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), Prelude_maybe(null, null, Lib_Syntax_RU(_$$1), ( eta ) => (Prelude_id(null, eta)), _$$3), Lib_Types_VU(_$$1)), ( 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, _$$2), _$$1, ty$27, Lib_Types_PrimTCon(arity)); })))); +const Lib_ProcessDecl_processPrimType = ( _$$0, _$$1, _$$2, _$$3 ) => (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), Prelude_maybe(null, null, Lib_Syntax_RU(_$$1), ( eta ) => (Prelude_id(null, eta)), _$$3), Lib_Types_VU(_$$1)), ( 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, _$$2), _$$1, ty$27, Lib_Types_PrimTCon(arity), Prelude_Nil(null)); })))); const Lib_Types_PrimFn = ( h0, h1, h2 ) => ({ tag: "PrimFn", h0: h0, h1: h1, h2: h2 }); -const Lib_ProcessDecl_processPrimFn = ( _$$0, _$$1, _$$2, _$$3, _$$4, _$$5 ) => (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), _$$4, Lib_Types_VU(_$$1)), ( 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 ")(_$$2))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), ty$27))))(" = "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$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, _$$3, ( name ) => { const sc$$11 = Lib_TopContext_lookupRaw(name, top); switch (sc$$11.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))(" not in scope")); case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types__name(sc$$11.h1)); } }), ( used$27 ) => { const arity = Lib_Util_piArity(ty$27); return Lib_TopContext_setDef(Lib_Common_QN(_$$0, _$$2), _$$1, ty$27, Lib_Types_PrimFn(_$$5, arity, used$27)); })))))))))); +const Lib_ProcessDecl_processPrimFn = ( _$$0, _$$1, _$$2, _$$3, _$$4, _$$5 ) => (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), _$$4, Lib_Types_VU(_$$1)), ( 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 ")(_$$2))(" : "))(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), ty$27))))(" = "))(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$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, _$$3, ( name ) => { const sc$$11 = Lib_TopContext_lookupRaw(name, top); switch (sc$$11.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))(" not in scope")); case "Just": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Lib_Types__name(sc$$11.h1)); } }), ( used$27 ) => { const arity = Lib_Util_piArity(ty$27); return Lib_TopContext_setDef(Lib_Common_QN(_$$0, _$$2), _$$1, ty$27, Lib_Types_PrimFn(_$$5, arity, used$27), Prelude_Nil(null)); })))))))))); const Lib_ProcessDecl_processClass_makeLHS = ( _, _1, _2, _3, _4, _5, _$$6, _$$7 ) => { switch (_$$7.tag) { case "_::_": { const _sc$$0 = _$$7.h1; const _sc$$1 = _sc$$0.h2; return Lib_Syntax_RApp(_sc$$1.h0, Lib_ProcessDecl_processClass_makeLHS(_, _1, _2, _3, _4, _5, _$$6, _$$7.h2), Lib_Syntax_RVar(_sc$$1.h0, _sc$$1.h1), "Implicit"); break; } case "Nil": return _$$6; } }; const Lib_ProcessDecl_processClass_makeLHS_mkAutoApp = ( _, _1, _2, _3, _4, _5, _6, _$$7, _$$8 ) => { const _sc$$0 = _$$8.h3; return Lib_Syntax_RApp(_$$8.h2, _$$7, Lib_Syntax_RVar(_$$8.h2, _sc$$0.h2), "Explicit"); }; const Lib_ProcessDecl_impTele_foo = ( _, _1, _$$2 ) => { const _sc$$0 = _$$2.h2; return Prelude__$2C_(null, null, Lib_Types_BI(_sc$$0.h0, _sc$$0.h1, "Implicit", "Zero"), _$$2.h3); }; @@ -950,8 +952,8 @@ const Lib_ProcessDecl_processClass_makeLHS_mkAutoApp_mkPi = ( _, _1, _2, _3, _4, const Lib_ProcessDecl_processClass_makeLHS_mkAutoApp_mkPi_mkApp = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _$$9, _$$10 ) => { const _sc$$0 = _$$10.h2; return Lib_Syntax_RApp(_sc$$0.h0, _$$9, Lib_Syntax_RVar(_sc$$0.h0, _sc$$0.h1), _sc$$0.h2); }; const Lib_ProcessDecl_REC_getSigs = ( arg ) => { const _sc$$0 = arg.h0; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; switch (_sc$$1.tag) { case "TypeSig": { const _sc$$2 = _sc$$1.h1; switch (_sc$$2.tag) { case "_::_": return { tag: "return", h0: Prelude__$3A$3A_(null, Prelude__$2C_(null, null, _sc$$1.h0, Prelude__$2C_(null, null, _sc$$2.h1, _sc$$1.h2)), Lib_ProcessDecl_getSigs(_sc$$0.h2)) }; case "Nil": return { tag: "Lib.ProcessDecl.getSigs", h0: _sc$$0.h2 }; } break; } default: return { tag: "Lib.ProcessDecl.getSigs", h0: _sc$$0.h2 }; } break; } case "Nil": return { tag: "return", h0: Prelude_Nil(null) }; } }; const Lib_ProcessDecl_getSigs = ( _$$0 ) => (bouncer(Lib_ProcessDecl_REC_getSigs, { tag: "Lib.ProcessDecl.getSigs", h0: _$$0 })); -const Lib_ProcessDecl_processClass = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (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 ")(_$$2))(""))), ( _1 ) => { const fields = Lib_ProcessDecl_getSigs(_$$4); const dcName = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Mk")(_$$2))(""); const tcType = Lib_ProcessDecl_teleToPi(_$$3, Lib_Syntax_RU(_$$1)); const tail = Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp_mkPi_mkApp(_$$0, _$$1, _$$2, _$$3, _$$4, null, null, null, null, eta, eta1))), Lib_Syntax_RVar(_$$1, _$$2), _$$3); const dcType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Prelude_foldr(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp_mkPi(_$$0, _$$1, _$$2, _$$3, _$$4, 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, _$$2, tcType, Prelude__$3A$3A_(null, Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(null, dcName, Prelude_Nil(null)), dcType), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => ("Decl:")), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _5 ) => (Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, decl), ( _6 ) => (Prelude_ignore(null, null, Lib_Types_Prelude_Functor$20Lib_Types_M)(Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, fields, ( $$case ) => { const _sc$$0 = $$case.h3; const funType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Lib_Syntax_RPi($$case.h2, Lib_Types_BI($$case.h2, "_", "Auto", "Many"), tail, _sc$$0.h3)); const autoPat = Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp(_$$0, _$$1, _$$2, _$$3, _$$4, null, null, eta, eta1))), Lib_Syntax_RVar(_$$1, dcName), fields); const lhs = Lib_ProcessDecl_processClass_makeLHS(_$$0, _$$1, _$$2, _$$3, _$$4, null, Lib_Syntax_RVar($$case.h2, _sc$$0.h2), _$$3); const lhs1 = Lib_Syntax_RApp(_$$1, lhs, autoPat, "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))))))); })))))))); }))); })))); -const Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow = ( _$$0 ) => { switch (_$$0.tag) { case "Record": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Record", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Syntax_Prelude_Show$20Lib_Types_BindInfo, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)))(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h3), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl))(_$$0.h4), Prelude_Nil(null))))))); case "Instance": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Instance", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_Maybe)(null)(null)(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl)))(_$$0.h2)), Prelude_Nil(null))))); case "Class": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Class", Prelude__$3A$3A_(null, _$$0.h1, Prelude__$3A$3A_(null, "...", Prelude__$3A$3A_(null, 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)(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl))(_$$0.h3)), Prelude_Nil(null)))))); case "PMixFix": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "PMixFix", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_Fixity)(_$$0.h3), Prelude_Nil(null)))))); case "PFunc": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "PFunc", Prelude__$3A$3A_(null, _$$0.h1, Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h3), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h4), Prelude_Nil(null))))))); case "PType": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "PType", Prelude__$3A$3A_(null, _$$0.h1, Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw))(_$$0.h2), Prelude_Nil(null))))); case "ShortData": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "ShortData", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw))(_$$0.h2), Prelude_Nil(null))))); case "Data": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Data", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl))(_$$0.h3), Prelude_Nil(null)))))); case "DCheck": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "DCheck", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude_Nil(null))))); case "Def": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Def", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)))(_$$0.h2), Prelude_Nil(null))))); case "TypeSig": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "TypeSig", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude_Nil(null))))); } }; +const Lib_ProcessDecl_processClass = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (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 ")(_$$2))(""))), ( _1 ) => { const fields = Lib_ProcessDecl_getSigs(_$$4); const dcName = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Mk")(_$$2))(""); const tcType = Lib_ProcessDecl_teleToPi(_$$3, Lib_Syntax_RU(_$$1)); const tail = Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp_mkPi_mkApp(_$$0, _$$1, _$$2, _$$3, _$$4, null, null, null, null, eta, eta1))), Lib_Syntax_RVar(_$$1, _$$2), _$$3); const dcType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Prelude_foldr(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp_mkPi(_$$0, _$$1, _$$2, _$$3, _$$4, 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, _$$2, tcType, Prelude__$3A$3A_(null, Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(null, dcName, Prelude_Nil(null)), dcType), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => ("Decl:")), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _5 ) => (Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, decl), ( _6 ) => (Prelude_ignore(null, null, Lib_Types_Prelude_Functor$20Lib_Types_M)(Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, fields, ( $$case ) => { const _sc$$0 = $$case.h3; const funType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Lib_Syntax_RPi($$case.h2, Lib_Types_BI($$case.h2, "_", "Auto", "Many"), tail, _sc$$0.h3)); const autoPat = Prelude_foldl(null, null, ( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp(_$$0, _$$1, _$$2, _$$3, _$$4, null, null, eta, eta1))), Lib_Syntax_RVar(_$$1, dcName), fields); const lhs = Lib_ProcessDecl_processClass_makeLHS(_$$0, _$$1, _$$2, _$$3, _$$4, null, Lib_Syntax_RVar($$case.h2, _sc$$0.h2), _$$3); const lhs1 = Lib_Syntax_RApp(_$$1, lhs, autoPat, "Auto"); const decl1 = Lib_Syntax_FunDef($$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))))))); })))))))); }))); })))); +const Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow = ( _$$0 ) => { switch (_$$0.tag) { case "Record": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Record", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Syntax_Prelude_Show$20Lib_Types_BindInfo, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)))(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h3), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl))(_$$0.h4), Prelude_Nil(null))))))); case "Instance": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Instance", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_Maybe)(null)(null)(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl)))(_$$0.h2)), Prelude_Nil(null))))); case "Class": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Class", Prelude__$3A$3A_(null, _$$0.h1, Prelude__$3A$3A_(null, "...", Prelude__$3A$3A_(null, 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)(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl))(_$$0.h3)), Prelude_Nil(null)))))); case "PMixFix": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "PMixFix", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_Int)(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_Fixity)(_$$0.h3), Prelude_Nil(null)))))); case "PFunc": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "PFunc", Prelude__$3A$3A_(null, _$$0.h1, Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h3), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h4), Prelude_Nil(null))))))); case "PType": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "PType", Prelude__$3A$3A_(null, _$$0.h1, Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw))(_$$0.h2), Prelude_Nil(null))))); case "ShortData": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "ShortData", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw))(_$$0.h2), Prelude_Nil(null))))); case "Data": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "Data", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl))(_$$0.h3), Prelude_Nil(null)))))); case "DCheck": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "DCheck", Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude_Nil(null))))); case "FunDef": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "FunDef", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(null, null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)))(_$$0.h2), Prelude_Nil(null))))); case "TypeSig": return Lib_Syntax_foo(Prelude__$3A$3A_(null, "TypeSig", Prelude__$3A$3A_(null, Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(_$$0.h1), Prelude__$3A$3A_(null, Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw)(_$$0.h2), Prelude_Nil(null))))); } }; const Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl = Prelude_MkShow(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow); const Lib_ProcessDecl_REC_processInstance_getFields_tenv_mkRHS = ( arg ) => { const _sc$$0 = arg.h8; switch (_sc$$0.tag) { case "_::_": { const _sc$$1 = _sc$$0.h1; const _sc$$2 = _sc$$1.h2; switch (_sc$$2) { case "Explicit": return { tag: "Lib.ProcessDecl.processInstance.getFields.tenv.mkRHS", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6, h7: arg.h7, h8: _sc$$0.h2, h9: Lib_Syntax_RApp(_sc$$1.h0, arg.h9, Lib_Syntax_RVar(_sc$$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)("")(arg.h7))(","))(_sc$$1.h1))("")), "Explicit") }; default: return { tag: "Lib.ProcessDecl.processInstance.getFields.tenv.mkRHS", h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6, h7: arg.h7, h8: _sc$$0.h2, h9: arg.h9 }; } break; } case "Nil": return { tag: "return", h0: arg.h9 }; } }; const Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS = ( _, _1, _2, _3, _4, _5, _6, _$$7, _$$8, _$$9 ) => (bouncer(Lib_ProcessDecl_REC_processInstance_getFields_tenv_mkRHS, { tag: "Lib.ProcessDecl.processInstance.getFields.tenv.mkRHS", h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: _5, h6: _6, h7: _$$7, h8: _$$8, h9: _$$9 })); @@ -959,13 +961,14 @@ const Lib_Syntax_Decl = { tag: "Decl" }; const Lib_Util_Binder = { tag: "Binder" }; const Lib_ProcessDecl_processInstance_getFields = ( _, _1, _2, _3, _4, _$$5, _$$6, _$$7 ) => { switch (_$$5.tag) { case "VPi": { const _sc$$0 = _$$5.h2; switch (_sc$$0) { case "Explicit": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude__$3C$$$3E_(null, Lib_Types_Prelude_Functor$20Lib_Types_M, null, null, ( eta ) => (Lib_Util_MkBinder(_$$5.h0, _$$5.h1, "Explicit", _$$5.h3, eta)), Lib_Eval_quote(Prelude_length$27(null, _$$6), _$$5.h4)), ( bnd ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_$$5.h5, Lib_Types_VVar(_$$5.h0, Prelude_length$27(null, _$$6), Prelude_Lin(null))), ( appsc ) => (Lib_ProcessDecl_processInstance_getFields(_, _1, _2, _3, _4, appsc, _$$6, Prelude__$3A$3A_(null, bnd, _$$7)))))); default: return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_$$5.h5, Lib_Types_VVar(_$$5.h0, Prelude_length$27(null, _$$6), Prelude_Lin(null))), ( appsc ) => (Lib_ProcessDecl_processInstance_getFields(_, _1, _2, _3, _4, appsc, _$$6, _$$7))); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_reverse(null)(_$$7)); } }; const Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply = ( _, _1, _2, _3, _4, _5, _6, _7, _$$8, _$$9 ) => { switch (_$$9.tag) { case "_::_": switch (_$$8.tag) { case "VPi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval__$$$$_(_$$8.h5, _$$9.h1), ( bx ) => (Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply(_, _1, _2, _3, _4, _5, _6, _7, bx, _$$9.h2))); default: return Lib_Types_error(null, _1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("expected pi type ")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Val)(_$$8)))("")); } break; case "Nil": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(_$$8); } }; +const Lib_TopContext_setFlag = ( _$$0, _$$1, _$$2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const sc$$4 = Data_SortedMap_lookupMap$27(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types__defs(top)); switch (sc$$4.tag) { case "Nothing": return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_$$0)))(" not declared")); case "Just": { const _sc$$0 = sc$$4.h1; return Lib_Types_modifyTop(( $$case ) => { const defs = Data_SortedMap_updateMap(null, null, Lib_Common_Prelude_Ord$20Lib_Common_QName, _$$0, Lib_Types_MkEntry(_sc$$0.h0, _$$0, _sc$$0.h2, _sc$$0.h3, Prelude__$3A$3A_(null, _$$2, _sc$$0.h4)), $$case.h3); return Lib_Types_MkTop($$case.h0, $$case.h1, $$case.h2, defs, $$case.h4, $$case.h5, $$case.h6, $$case.h7); }); break; } } })); const Lib_Util_Prelude_Show$20Lib_Util_Binder$2Cshow = ( _$$0 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("(")(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Quant)(_$$0.h3)))(""))(_$$0.h1))(" "))(Prelude_show(null, Lib_Types_Prelude_Show$20Lib_Types_Icit)(_$$0.h2)))(" : ... :: Nil)")); const Lib_Util_Prelude_Show$20Lib_Util_Binder = Prelude_MkShow(null, Lib_Util_Prelude_Show$20Lib_Util_Binder$2Cshow); const Lib_ProcessDecl_processInstance_getFields_tenv = ( _, _1, _2, _3, _4, _5, _$$6 ) => { switch (_$$6.tag) { case "S": return Prelude__$3A$3A_(null, Lib_Types_VVar(Lib_Common_emptyFC, Prelude_cast(null, null, Prelude_Prelude_Cast$20Prelude_Nat$20Prim_Int)(_$$6.h0), Prelude_Lin(null)), Lib_ProcessDecl_processInstance_getFields_tenv(_, _1, _2, _3, _4, _5, _$$6.h0)); case "Z": return Prelude_Nil(null); } }; -const Lib_ProcessDecl_processInstance = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Instance ")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$2))))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const tyFC = Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(_$$2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$2, Lib_Types_VU(_$$1)), ( vty ) => { const sc$$13 = Lib_Util_splitTele(vty); const env = Lib_ProcessDecl_processInstance_getFields_tenv(_$$0, _$$1, _$$2, _$$3, null, null, Prelude_length(null, sc$$13.h3)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("codomain ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2))))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tele is ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Util_Prelude_Show$20Lib_Util_Binder))(sc$$13.h3)))(""))), ( _3 ) => { const instname = Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2)); const sigDecl = Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(null, instname, Prelude_Nil(null)), _$$2); const sc$$23 = Lib_TopContext_lookupRaw(instname, top); switch (sc$$23.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, sigDecl), ( _4 ) => { const sc$$24 = Prelude__$3C$$$3E_(null, Prelude_Prelude_Functor$20Prelude_Maybe, null, null, Lib_Elab_collectDecl, _$$3); switch (sc$$24.tag) { case "Just": { const sc$$27 = Lib_Util_funArgs(sc$$13.h2); const _sc$$0 = sc$$27.h2; switch (_sc$$0.tag) { case "Ref": { const sc$$34 = Lib_TopContext_lookup(_sc$$0.h1, top); switch (sc$$34.tag) { case "Just": { const _sc$$1 = sc$$34.h1; const _sc$$2 = _sc$$1.h3; switch (_sc$$2.tag) { case "TCon": { const _sc$$3 = _sc$$2.h1; switch (_sc$$3.tag) { case "_::_": { const _sc$$4 = _sc$$3.h2; switch (_sc$$4.tag) { case "Nil": { const sc$$48 = Lib_TopContext_lookup(_sc$$3.h1, top); switch (sc$$48.tag) { case "Just": { const _sc$$5 = sc$$48.h1; const _sc$$6 = _sc$$5.h3; switch (_sc$$6.tag) { case "DCon": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$5.h2), ( $$sc ) => { switch ($$sc.tag) { case "VPi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dcty ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$5.h2))))(""))), ( _5 ) => { const sc$$67 = Lib_Util_funArgs(sc$$13.h2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("traverse ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Types_showTm)(sc$$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, "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_processInstance_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$2, _$$3, null, null, null, null, $$sc, args$27), ( appty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processInstance_getFields(_$$0, _$$1, _$$2, _$$3, null, appty, env, Prelude_Nil(null)), ( conTele ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, conTele, ( $$case ) => { const _sc$$7 = $$case.h2; switch (_sc$$7) { case "Explicit": { const ty$27 = Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$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$$13.h3); const nm$27 = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(instname))(","))($$case.h1))(""); const sc$$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 "False"; } }, sc$$24.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, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), defs), ( decl ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _8 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _8 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))), ( _8 ) => { const _sc$$7 = _sc$$3.h1; const decl = Lib_Syntax_Def(_$$1, instname, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, Lib_Syntax_RVar(_$$1, instname), Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS(_$$0, _$$1, _$$2, _$$3, null, null, null, instname, conTele, Lib_Syntax_RVar(_$$1, _sc$$7.h1))), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _9 ) => ("SIGDECL")), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _10 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(sigDecl))))(""))), ( _10 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _11 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _11 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))))); }))))))))))))); }); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)($$sc), "dcty not Pi"); } }); default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2))))(" doesn't appear to be a TCon application")); } break; } default: return Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Forward declaration ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl)(sigDecl)))(""))); } }); case "Just": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"), ( _4 ) => { const sc$$24 = Prelude__$3C$$$3E_(null, Prelude_Prelude_Functor$20Prelude_Maybe, null, null, Lib_Elab_collectDecl, _$$3); switch (sc$$24.tag) { case "Just": { const sc$$27 = Lib_Util_funArgs(sc$$13.h2); const _sc$$0 = sc$$27.h2; switch (_sc$$0.tag) { case "Ref": { const sc$$34 = Lib_TopContext_lookup(_sc$$0.h1, top); switch (sc$$34.tag) { case "Just": { const _sc$$1 = sc$$34.h1; const _sc$$2 = _sc$$1.h3; switch (_sc$$2.tag) { case "TCon": { const _sc$$3 = _sc$$2.h1; switch (_sc$$3.tag) { case "_::_": { const _sc$$4 = _sc$$3.h2; switch (_sc$$4.tag) { case "Nil": { const sc$$48 = Lib_TopContext_lookup(_sc$$3.h1, top); switch (sc$$48.tag) { case "Just": { const _sc$$5 = sc$$48.h1; const _sc$$6 = _sc$$5.h3; switch (_sc$$6.tag) { case "DCon": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$5.h2), ( $$sc ) => { switch ($$sc.tag) { case "VPi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dcty ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), _sc$$5.h2))))(""))), ( _5 ) => { const sc$$67 = Lib_Util_funArgs(sc$$13.h2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("traverse ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Prelude_Prelude_Show$20Prim_String))(Prelude_map(null, Prelude_Prelude_Functor$20Prelude_List)(null)(null)(Lib_Types_showTm)(sc$$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, "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_processInstance_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$2, _$$3, null, null, null, null, $$sc, args$27), ( appty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processInstance_getFields(_$$0, _$$1, _$$2, _$$3, null, appty, env, Prelude_Nil(null)), ( conTele ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, conTele, ( $$case ) => { const _sc$$7 = $$case.h2; switch (_sc$$7) { case "Explicit": { const ty$27 = Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$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$$13.h3); const nm$27 = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(instname))(","))($$case.h1))(""); const sc$$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 "False"; } }, sc$$24.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, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), defs), ( decl ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _8 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _8 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))), ( _8 ) => { const _sc$$7 = _sc$$3.h1; const decl = Lib_Syntax_Def(_$$1, instname, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, Lib_Syntax_RVar(_$$1, instname), Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS(_$$0, _$$1, _$$2, _$$3, null, null, null, instname, conTele, Lib_Syntax_RVar(_$$1, _sc$$7.h1))), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _9 ) => ("SIGDECL")), ( _9 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _10 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(sigDecl))))(""))), ( _10 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _11 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _11 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))))); }))))))))))))); }); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)($$sc), "dcty not Pi"); } }); default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2))))(" doesn't appear to be a TCon application")); } break; } default: return Lib_Types_debug(( _5 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Forward declaration ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl)(sigDecl)))(""))); } }); } }))); }); })))))); +const Lib_ProcessDecl_processInstance = ( _$$0, _$$1, _$$2, _$$3 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Instance ")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(_$$2))))(""))), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_getTop, ( top ) => { const tyFC = Lib_Common_getFC(null, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw)(_$$2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Elab_check(Lib_Types_mkCtx(_$$1), _$$2, Lib_Types_VU(_$$1)), ( vty ) => { const sc$$13 = Lib_Util_splitTele(vty); const env = Lib_ProcessDecl_processInstance_getFields_tenv(_$$0, _$$1, _$$2, _$$3, null, null, Prelude_length(null, sc$$13.h3)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("codomain ")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2))))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tele is ")(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Util_Prelude_Show$20Lib_Util_Binder))(sc$$13.h3)))(""))), ( _3 ) => { const instname = Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2)); const sigDecl = Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(null, instname, Prelude_Nil(null)), _$$2); const sc$$23 = Lib_TopContext_lookupRaw(instname, top); switch (sc$$23.tag) { case "Nothing": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, sigDecl), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_setFlag(Lib_Common_QN(_$$0, instname), _$$1, "Hint"), ( _5 ) => { const sc$$25 = Prelude__$3C$$$3E_(null, Prelude_Prelude_Functor$20Prelude_Maybe, null, null, Lib_Elab_collectDecl, _$$3); switch (sc$$25.tag) { case "Just": { const sc$$28 = Lib_Util_funArgs(sc$$13.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$$50 = Lib_TopContext_lookup(_sc$$3.h1, top); switch (sc$$50.tag) { case "Just": { const _sc$$5 = sc$$50.h1; const _sc$$6 = _sc$$5.h3; switch (_sc$$6.tag) { case "DCon": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$5.h2), ( $$sc ) => { switch ($$sc.tag) { case "VPi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (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))))(""))), ( _6 ) => { const sc$$70 = Lib_Util_funArgs(sc$$13.h2); return 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)("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$$70.h3))))(""))), ( _7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Eval_eval(env, "CBN", eta)))(sc$$70.h3), ( args$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _8 ) => (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)))(""))), ( _8 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$2, _$$3, null, null, null, null, $$sc, args$27), ( appty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processInstance_getFields(_$$0, _$$1, _$$2, _$$3, null, appty, env, Prelude_Nil(null)), ( conTele ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, conTele, ( $$case ) => { const _sc$$7 = $$case.h2; switch (_sc$$7) { case "Explicit": { const ty$27 = Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$89 = Prelude_the(Lib_Util_Binder, x); return Lib_Types_Pi(sc$$89.h0, sc$$89.h1, sc$$89.h2, sc$$89.h3, sc$$89.h4, acc); }), $$case.h4, sc$$13.h3); const nm$27 = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(instname))(","))($$case.h1))(""); const sc$$89 = Prelude_find(null, ( x ) => { const sc$$90 = Prelude_the(Lib_Syntax_Decl, x); switch (sc$$90.tag) { case "FunDef": return Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(sc$$90.h1)($$case.h1); default: return "False"; } }, sc$$25.h1); switch (sc$$89.tag) { case "Just": { const _sc$$8 = sc$$89.h1; switch (_sc$$8.tag) { case "FunDef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), _sc$$8.h0, ty$27, Lib_Types_Axiom, Prelude_Nil(null)), ( _9 ) => { const decl = Lib_Syntax_FunDef(_sc$$8.h0, nm$27, _sc$$8.h2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _10 ) => ("***")), ( _10 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _11 ) => (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))))(""))), ( _11 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _12 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _12 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, decl)))))))); }); default: return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), defs), ( decl ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _9 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _9 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))), ( _9 ) => { const _sc$$7 = _sc$$3.h1; const decl = Lib_Syntax_FunDef(_$$1, instname, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, Lib_Syntax_RVar(_$$1, instname), Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS(_$$0, _$$1, _$$2, _$$3, null, null, null, instname, conTele, Lib_Syntax_RVar(_$$1, _sc$$7.h1))), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _10 ) => ("SIGDECL")), ( _10 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _11 ) => (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))))(""))), ( _11 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _12 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _12 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))))); }))))))))))))); }); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)($$sc), "dcty not Pi"); } }); default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2))))(" doesn't appear to be a TCon application")); } break; } default: return Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Forward declaration ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl)(sigDecl)))(""))); } }))); case "Just": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_setFlag(Lib_Common_QN(_$$0, instname), _$$1, "Hint"), ( _5 ) => { const sc$$25 = Prelude__$3C$$$3E_(null, Prelude_Prelude_Functor$20Prelude_Maybe, null, null, Lib_Elab_collectDecl, _$$3); switch (sc$$25.tag) { case "Just": { const sc$$28 = Lib_Util_funArgs(sc$$13.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$$50 = Lib_TopContext_lookup(_sc$$3.h1, top); switch (sc$$50.tag) { case "Just": { const _sc$$5 = sc$$50.h1; const _sc$$6 = _sc$$5.h3; switch (_sc$$6.tag) { case "DCon": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Eval_eval(Prelude_Nil(null), "CBN", _sc$$5.h2), ( $$sc ) => { switch ($$sc.tag) { case "VPi": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _6 ) => (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))))(""))), ( _6 ) => { const sc$$70 = Lib_Util_funArgs(sc$$13.h2); return 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)("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$$70.h3))))(""))), ( _7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_traverse(null, Prelude_Prelude_Traversable$20Prelude_List)(null)(null)(null)(Lib_Types_Prelude_Applicative$20Lib_Types_M)(( eta ) => (Lib_Eval_eval(env, "CBN", eta)))(sc$$70.h3), ( args$27 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _8 ) => (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)))(""))), ( _8 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$2, _$$3, null, null, null, null, $$sc, args$27), ( appty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processInstance_getFields(_$$0, _$$1, _$$2, _$$3, null, appty, env, Prelude_Nil(null)), ( conTele ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, conTele, ( $$case ) => { const _sc$$7 = $$case.h2; switch (_sc$$7) { case "Explicit": { const ty$27 = Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$89 = Prelude_the(Lib_Util_Binder, x); return Lib_Types_Pi(sc$$89.h0, sc$$89.h1, sc$$89.h2, sc$$89.h3, sc$$89.h4, acc); }), $$case.h4, sc$$13.h3); const nm$27 = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(instname))(","))($$case.h1))(""); const sc$$89 = Prelude_find(null, ( x ) => { const sc$$90 = Prelude_the(Lib_Syntax_Decl, x); switch (sc$$90.tag) { case "FunDef": return Prelude__$3D$3D_(null, Prelude_Prelude_Eq$20Prim_String)(sc$$90.h1)($$case.h1); default: return "False"; } }, sc$$25.h1); switch (sc$$89.tag) { case "Just": { const _sc$$8 = sc$$89.h1; switch (_sc$$8.tag) { case "FunDef": return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), _sc$$8.h0, ty$27, Lib_Types_Axiom, Prelude_Nil(null)), ( _9 ) => { const decl = Lib_Syntax_FunDef(_sc$$8.h0, nm$27, _sc$$8.h2); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _10 ) => ("***")), ( _10 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _11 ) => (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))))(""))), ( _11 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _12 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _12 ) => (Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Just(null, decl)))))))); }); default: return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Lib_Types_error(null, _$$1, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("no definition for ")($$case.h1))("")); } break; } default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)(Prelude_Nothing(null)); } }), ( defs ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, Prelude_mapMaybe(null, null, ( eta ) => (Prelude_id(null, eta)), defs), ( decl ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_debug(( _9 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _9 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))), ( _9 ) => { const _sc$$7 = _sc$$3.h1; const decl = Lib_Syntax_FunDef(_$$1, instname, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, Lib_Syntax_RVar(_$$1, instname), Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS(_$$0, _$$1, _$$2, _$$3, null, null, null, instname, conTele, Lib_Syntax_RVar(_$$1, _sc$$7.h1))), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _10 ) => ("SIGDECL")), ( _10 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _11 ) => (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))))(""))), ( _11 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _12 ) => (Lib_Prettier_render(80, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _12 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))))); }))))))))))))); }); default: return Lib_Types_error(null, Lib_Common_getFC(null, Lib_Types_Lib_Common_HasFC$20Lib_Types_Val)($$sc), "dcty not Pi"); } }); default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("can't find constructor ")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$3.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" has multiple constructors "))(Prelude_show(null, Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29(null, Lib_Common_Prelude_Show$20Lib_Common_QName))(_sc$$2.h1)))("")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Prelude_show(null, Lib_Common_Prelude_Show$20Lib_Common_QName)(_sc$$0.h1)))(" is not a type constructor")); } break; } default: return Lib_Types_error(null, tyFC, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Types_pprint(Prelude_Nil(null), sc$$13.h2))))(" doesn't appear to be a TCon application")); } break; } default: return Lib_Types_debug(( _6 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Forward declaration ")(Prelude_show(null, Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl)(sigDecl)))(""))); } }))); } }))); }); })))))); const Prelude__$D7_ = ( h0, h1 ) => ({ tag: "_×_", h0: h0, h1: h1 }); -const Lib_ProcessDecl_processRecord = ( _$$0, _$$1, _$$2, _$$3, _$$4, _$$5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => ("Record")), ( _1 ) => { const fields = Lib_ProcessDecl_getSigs(_$$5); const dcName = Prelude_fromMaybe(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Mk")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$2)))(""), _$$4); const tcType = Lib_ProcessDecl_teleToPi(_$$3, Lib_Syntax_RU(_$$1)); const tail = Prelude_foldl(null, null, ( acc ) => (( bi ) => { const sc$$13 = Prelude_the(Prelude__$D7_(null, null), bi); const _sc$$0 = sc$$13.h2; return Lib_Syntax_RApp(_sc$$0.h0, acc, Lib_Syntax_RVar(_sc$$0.h0, _sc$$0.h1), _sc$$0.h2); }), Lib_Syntax_RVar(_$$1, _$$2), _$$3); const dcType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$14 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$0 = sc$$14.h3; return Lib_Syntax_RPi(sc$$14.h2, Lib_Types_BI(sc$$14.h2, _sc$$0.h2, "Explicit", "Many"), _sc$$0.h3, acc); }), tail, fields)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tcon type ")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(tcType))))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dcon type ")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(dcType))))(""))), ( _3 ) => { const decl = Lib_Syntax_Data(_$$1, _$$2, tcType, Prelude__$3A$3A_(null, Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(null, dcName, Prelude_Nil(null)), dcType), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => ("Decl:")), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _5 ) => (Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, decl), ( _6 ) => (Prelude_ignore(null, null, Lib_Types_Prelude_Functor$20Lib_Types_M)(Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, fields, ( $$case ) => { const _sc$$0 = $$case.h3; const funType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Lib_Syntax_RPi($$case.h2, Lib_Types_BI($$case.h2, "_", "Explicit", "Many"), tail, _sc$$0.h3)); const autoPat = Prelude_foldl(null, null, ( acc ) => (( x ) => { const sc$$32 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$1 = sc$$32.h3; return Lib_Syntax_RApp(sc$$32.h2, acc, Lib_Syntax_RVar(sc$$32.h2, _sc$$1.h2), "Explicit"); }), Lib_Syntax_RVar(_$$1, dcName), fields); const pname = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(".")(_sc$$0.h2); const lhs = Prelude_foldl(null, null, ( acc ) => (( x ) => { const sc$$34 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$1 = sc$$34.h2; return Lib_Syntax_RApp(_sc$$1.h0, acc, Lib_Syntax_RVar(_sc$$1.h0, _sc$$1.h1), "Implicit"); }), Lib_Syntax_RVar($$case.h2, pname), _$$3); const lhs1 = Lib_Syntax_RApp(_$$1, lhs, autoPat, "Explicit"); const pdecl = Lib_Syntax_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))))))); })))))))); }))); })))); -const Lib_ProcessDecl_processDecl = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Record": return Lib_ProcessDecl_processRecord(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case "Instance": return Lib_ProcessDecl_processInstance(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "Class": return Lib_ProcessDecl_processClass(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3); case "PMixFix": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "PFunc": return Lib_ProcessDecl_processPrimFn(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case "PType": return Lib_ProcessDecl_processPrimType(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "ShortData": return Lib_ProcessDecl_processShortData(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "Data": return Lib_ProcessDecl_processData(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3); case "DCheck": return Lib_ProcessDecl_processCheck(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "Def": return Lib_ProcessDecl_processDef(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "TypeSig": return Lib_ProcessDecl_processTypeSig(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); } }; +const Lib_ProcessDecl_processRecord = ( _$$0, _$$1, _$$2, _$$3, _$$4, _$$5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _1 ) => ("Record")), ( _1 ) => { const fields = Lib_ProcessDecl_getSigs(_$$5); const dcName = Prelude_fromMaybe(null, Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("Mk")(Prelude_show(null, Prelude_Prelude_Show$20Prim_String)(_$$2)))(""), _$$4); const tcType = Lib_ProcessDecl_teleToPi(_$$3, Lib_Syntax_RU(_$$1)); const tail = Prelude_foldl(null, null, ( acc ) => (( bi ) => { const sc$$13 = Prelude_the(Prelude__$D7_(null, null), bi); const _sc$$0 = sc$$13.h2; return Lib_Syntax_RApp(_sc$$0.h0, acc, Lib_Syntax_RVar(_sc$$0.h0, _sc$$0.h1), _sc$$0.h2); }), Lib_Syntax_RVar(_$$1, _$$2), _$$3); const dcType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Prelude_foldr(null, null, ( x ) => (( acc ) => { const sc$$14 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$0 = sc$$14.h3; return Lib_Syntax_RPi(sc$$14.h2, Lib_Types_BI(sc$$14.h2, _sc$$0.h2, "Explicit", "Many"), _sc$$0.h3, acc); }), tail, fields)); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _2 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("tcon type ")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(tcType))))(""))), ( _2 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _3 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("dcon type ")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(dcType))))(""))), ( _3 ) => { const decl = Lib_Syntax_Data(_$$1, _$$2, tcType, Prelude__$3A$3A_(null, Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(null, dcName, Prelude_Nil(null)), dcType), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _4 ) => ("Decl:")), ( _4 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _5 ) => (Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(decl)))), ( _5 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, decl), ( _6 ) => (Prelude_ignore(null, null, Lib_Types_Prelude_Functor$20Lib_Types_M)(Prelude_for(null, null, Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, null, null, fields, ( $$case ) => { const _sc$$0 = $$case.h3; const funType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Lib_Syntax_RPi($$case.h2, Lib_Types_BI($$case.h2, "_", "Explicit", "Many"), tail, _sc$$0.h3)); const autoPat = Prelude_foldl(null, null, ( acc ) => (( x ) => { const sc$$32 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$1 = sc$$32.h3; return Lib_Syntax_RApp(sc$$32.h2, acc, Lib_Syntax_RVar(sc$$32.h2, _sc$$1.h2), "Explicit"); }), Lib_Syntax_RVar(_$$1, dcName), fields); const pname = Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(".")(_sc$$0.h2); const lhs = Prelude_foldl(null, null, ( acc ) => (( x ) => { const sc$$34 = Prelude_the(Prelude__$D7_(null, null), x); const _sc$$1 = sc$$34.h2; return Lib_Syntax_RApp(_sc$$1.h0, acc, Lib_Syntax_RVar(_sc$$1.h0, _sc$$1.h1), "Implicit"); }), Lib_Syntax_RVar($$case.h2, pname), _$$3); const lhs1 = Lib_Syntax_RApp(_$$1, lhs, autoPat, "Explicit"); const pdecl = Lib_Syntax_FunDef($$case.h2, pname, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, lhs1, Lib_Syntax_RVar($$case.h2, _sc$$0.h2)), Prelude_Nil(null))); return Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _7 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(pname))(" : "))(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw)(funType))))(""))), ( _7 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_log(1, ( _8 ) => (Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)(Prelude__$2B$2B_(null, Prelude_Prelude_Concat$20Prim_String)("")(Lib_Prettier_render(90, Lib_Prettier_pretty(null, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl)(pdecl))))(""))), ( _8 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_ProcessDecl_processDecl(_$$0, Lib_Syntax_TypeSig($$case.h2, Prelude__$3A$3A_(null, pname, Prelude_Nil(null)), funType)), ( _9 ) => (Lib_ProcessDecl_processDecl(_$$0, pdecl))))))); })))))))); }))); })))); +const Lib_ProcessDecl_processDecl = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case "Record": return Lib_ProcessDecl_processRecord(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case "Instance": return Lib_ProcessDecl_processInstance(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "Class": return Lib_ProcessDecl_processClass(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3); case "PMixFix": return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); case "PFunc": return Lib_ProcessDecl_processPrimFn(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case "PType": return Lib_ProcessDecl_processPrimType(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "ShortData": return Lib_ProcessDecl_processShortData(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "Data": return Lib_ProcessDecl_processData(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3); case "DCheck": return Lib_ProcessDecl_processCheck(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "FunDef": return Lib_ProcessDecl_processDef(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case "TypeSig": return Lib_ProcessDecl_processTypeSig(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); } }; const Main_processModule_tryProcessDecl = ( _, _1, _2, _3, _4, _5, _6, _$$7, _$$8 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Types_Prelude_Monad$20Lib_Types_M, Lib_Types_tryError(null, Lib_ProcessDecl_processDecl(_$$7, _$$8)), ( $$sc ) => { switch ($$sc.tag) { case "Left": return Lib_TopContext_addError($$sc.h2); default: return Prelude_pure(null, Lib_Types_Prelude_Monad$20Lib_Types_M)(null)("MkUnit"); } })); const 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))))); @@ -1103,7 +1106,7 @@ const Lib_Syntax_Instance = ( h0, h1, h2 ) => ({ tag: "Instance", h0: h0, h1: const Lib_Syntax_RWhere = ( h0, h1, h2 ) => ({ tag: "RWhere", h0: h0, h1: h1, h2: h2 }); const Lib_Parser_REC_getName = ( arg ) => { const _sc$$0 = arg.h0; switch (_sc$$0.tag) { case "RApp": return { tag: "Lib.Parser.getName", h0: _sc$$0.h1 }; case "RVar": return { tag: "return", h0: Prelude_pure(null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser)(null)(_sc$$0.h1) }; default: return { tag: "return", h0: Lib_Parser_Impl_fail(null, "bad LHS") }; } }; const Lib_Parser_getName = ( _$$0 ) => (bouncer(Lib_Parser_REC_getName, { tag: "Lib.Parser.getName", h0: _$$0 })); -const Lib_Parser_parseDef = Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_getPos, ( fc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_typeExpr, ( t ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_getName(t), ( nm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_keyword("="), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_typeExpr, ( body ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_getPos, ( wfc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_optional(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_keyword("where"), ( _1 ) => (Lib_Parser_Impl_startBlock(null, Lib_Parser_Impl_manySame(null, Prelude__$3C$7C$3E_(null, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser)(null)(Lib_Parser_parseSig)(Lib_Parser_parseDef)))))), ( w ) => { const body1 = Prelude_maybe(null, null, body, ( decls ) => (Lib_Syntax_RWhere(wfc, decls, body)), w); return Prelude_pure(null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser)(null)(Lib_Syntax_Def(fc, nm, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, t, body1), Prelude_Nil(null)))); }))))))))))))); +const Lib_Parser_parseDef = Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_getPos, ( fc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_typeExpr, ( t ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_getName(t), ( nm ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_keyword("="), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_typeExpr, ( body ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_getPos, ( wfc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_optional(null, Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_keyword("where"), ( _1 ) => (Lib_Parser_Impl_startBlock(null, Lib_Parser_Impl_manySame(null, Prelude__$3C$7C$3E_(null, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser)(null)(Lib_Parser_parseSig)(Lib_Parser_parseDef)))))), ( w ) => { const body1 = Prelude_maybe(null, null, body, ( decls ) => (Lib_Syntax_RWhere(wfc, decls, body)), w); return Prelude_pure(null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser)(null)(Lib_Syntax_FunDef(fc, nm, Prelude__$3A$3A_(null, Prelude__$2C_(null, null, t, body1), Prelude_Nil(null)))); }))))))))))))); const Lib_Parser_parseInstance = Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_getPos, ( fc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_keyword("instance"), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_typeExpr, ( ty ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_optional(null, Lib_Parser_Impl_keyword("where")), ( $$sc ) => { switch ($$sc.tag) { case "Just": return Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_startBlock(null, Lib_Parser_Impl_manySame(null, Lib_Parser_parseDef)), ( decls ) => (Prelude_pure(null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser)(null)(Lib_Syntax_Instance(fc, ty, Prelude_Just(null, decls))))); default: return Prelude_pure(null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser)(null)(Lib_Syntax_Instance(fc, ty, Prelude_Nothing(null))); } }))))))); const Lib_Syntax_Class = ( h0, h1, h2, h3 ) => ({ tag: "Class", h0: h0, h1: h1, h2: h2, h3: h3 }); const Lib_Parser_parseClass = Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_getPos, ( fc ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_keyword("class"), ( _ ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_uident, ( name ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_many(null, Prelude__$3C$7C$3E_(null, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser)(null)(Lib_Parser_ebind)(Lib_Parser_nakedBind)), ( teles ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_keyword("where"), ( _1 ) => (Prelude__$3E$3E$3D_(null, null, null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_startBlock(null, Lib_Parser_Impl_manySame(null, Lib_Parser_parseSig)), ( decls ) => (Prelude_pure(null, Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser)(null)(Lib_Syntax_Class(fc, name, Prelude_join(null, null, Prelude_Prelude_Monad$20Prelude_List, teles), decls)))))))))))))); diff --git a/newt-vscode/.eslintrc.json b/newt-vscode/.eslintrc.json index 1d3c8a0..eb84081 100644 --- a/newt-vscode/.eslintrc.json +++ b/newt-vscode/.eslintrc.json @@ -17,7 +17,7 @@ } ], "@typescript-eslint/semi": "warn", - "curly": ["warn", "multi", "consistent"], + "curly": "off", "eqeqeq": "warn", "no-throw-literal": "warn", "semi": "off" diff --git a/newt-vscode/src/extension.ts b/newt-vscode/src/extension.ts index bd48f86..3d45ef2 100644 --- a/newt-vscode/src/extension.ts +++ b/newt-vscode/src/extension.ts @@ -85,6 +85,7 @@ export function activate(context: vscode.ExtensionContext) { // extract errors and messages from stdout const lines = stdout.split("\n"); const diagnostics: vscode.Diagnostic[] = []; + const others: Record = {}; if (err) { let start = new vscode.Position(0, 0); @@ -117,7 +118,26 @@ export function activate(context: vscode.ExtensionContext) { let [_full, kind, file, line, column, message] = match; let lnum = Number(line); let cnum = Number(column); - if (file !== fileName) lnum = cnum = 0; + + let severity; + if (kind === "ERROR") severity = vscode.DiagnosticSeverity.Error; + else if (kind === "WARN") severity = vscode.DiagnosticSeverity.Warning; + else severity = vscode.DiagnosticSeverity.Information; + + // anything indented after the ERROR/INFO line are part of + // the message + while (lines[i + 1]?.match(/^( )/)) message += "\n" + lines[++i]; + + if (file !== fileName) { + console.log('MM', file, fileName, lnum, cnum); + let start = new vscode.Position(lnum, cnum); + let end = new vscode.Position(lnum, cnum + 1); + let range = new vscode.Range(start, end); + const diag = new vscode.Diagnostic(range, message, severity); + if (!others[file]) others[file] = []; + others[file].push(diag); + lnum = cnum = 0; + } let start = new vscode.Position(lnum, cnum); // we don't have the full range, so grab the surrounding word @@ -125,19 +145,13 @@ export function activate(context: vscode.ExtensionContext) { let range = document.getWordRangeAtPosition(start) ?? new vscode.Range(start, end); - // anything indented after the ERROR/INFO line are part of - // the message - while (lines[i + 1]?.match(/^( )/)) message += "\n" + lines[++i]; - - let severity; - - if (kind === "ERROR") severity = vscode.DiagnosticSeverity.Error; - else if (kind === "WARN") severity = vscode.DiagnosticSeverity.Warning; - else severity = vscode.DiagnosticSeverity.Information; const diag = new vscode.Diagnostic(range, message, severity); if (kind === "ERROR" || lnum > 0) diagnostics.push(diag); } } + for (let file in others) { + diagnosticCollection.set(vscode.Uri.file(file), others[file]) + } diagnosticCollection.set(vscode.Uri.file(fileName), diagnostics); } ); diff --git a/src/Lib/Compile.newt b/src/Lib/Compile.newt index 55a9a69..452b080 100644 --- a/src/Lib/Compile.newt +++ b/src/Lib/Compile.newt @@ -308,7 +308,7 @@ getNames (Case x t alts) acc = foldl getAltNames acc alts where getAltNames : List QName -> CaseAlt -> List QName getAltNames acc (CaseDefault t) = getNames t acc - getAltNames acc (CaseCons name args t) = getNames t acc + getAltNames acc (CaseCons name args t) = name :: getNames t acc getAltNames acc (CaseLit lit t) = getNames t acc getNames _ acc = acc @@ -321,12 +321,12 @@ getEntries acc name = do Nothing => do putStrLn "bad name \{show name}" pure acc - Just (MkEntry _ name type def@(Fn exp)) => case lookupMap' name acc of + Just (MkEntry _ name type def@(Fn exp) _) => case lookupMap' name acc of Just _ => pure acc Nothing => let acc = updateMap name def acc in foldlM getEntries acc $ getNames exp Nil - Just (MkEntry _ name type def@(PrimFn _ _ used)) => + Just (MkEntry _ name type def@(PrimFn _ _ used) _) => let acc = updateMap name def acc in foldlM getEntries acc used Just entry => pure $ updateMap name entry.def acc @@ -402,7 +402,7 @@ compile : M (List Doc) compile = do top <- getTop case lookupRaw "main" top of - Just (MkEntry fc name type def) => do + Just (MkEntry fc name type def _) => do tmp <- process name -- tack on call to main function let exec = stmtToDoc $ JPlain $ Apply (Var $ show name) Nil diff --git a/src/Lib/CompileExp.newt b/src/Lib/CompileExp.newt index 0bc46a8..ecf5ba5 100644 --- a/src/Lib/CompileExp.newt +++ b/src/Lib/CompileExp.newt @@ -68,7 +68,6 @@ arityForName fc nm = do (Just (PrimFn t arity used)) => pure arity -compileTerm : {{Ref2 Defs St}} → Tm -> M CExp -- need to eta out extra args, fill in the rest of the apps -- NOW - maybe eta here instead of Compile.newt, drop number on CApp @@ -89,6 +88,14 @@ apply t ts acc Z = go (CApp t (acc <>> Nil) 0) ts go t Nil = pure t go t (arg :: args) = go (CApp t (arg :: Nil) 0) args +lookupDef : {{Ref2 Defs St}} → FC → QName → M Def +lookupDef fc nm = do + defs <- getRef Defs + case lookupMap' nm defs of + Nothing => error fc "\{show nm} not in scope" + Just def => pure def + +compileTerm : {{Ref2 Defs St}} → Tm -> M CExp compileTerm (Bnd _ k) = pure $ CBnd k -- need to eta expand to arity compileTerm t@(Ref fc nm@(QN _ tag)) = do @@ -119,7 +126,6 @@ compileTerm tm@(App _ _ _) = case funArgs tm of t' <- compileTerm t args' <- traverse compileTerm args apply t' args' Lin Z - -- error (getFC t) "Don't know how to apply \{showTm t}" compileTerm (UU _) = pure $ CRef (QN Nil "U") compileTerm (Pi _ nm icit rig t u) = do t' <- compileTerm t @@ -132,8 +138,9 @@ compileTerm (Case _ t alts) = do -- we use the base name for the tag, some primitives assume this CaseCons qn@(QN ns nm) args tm => do defs <- getRef Defs - case the (Maybe Def) $ lookupMap' qn defs of - Just (DCon EnumCon _ _) => CLitAlt (LString nm) <$> compileTerm tm + def <- lookupDef emptyFC qn + case def of + DCon EnumCon _ _ => CLitAlt (LString nm) <$> compileTerm tm _ => CConAlt nm args <$> compileTerm tm CaseLit lit tm => CLitAlt lit <$> compileTerm tm pure $ CCase t' alts' diff --git a/src/Lib/Elab.newt b/src/Lib/Elab.newt index 63fcc3d..45f80c5 100644 --- a/src/Lib/Elab.newt +++ b/src/Lib/Elab.newt @@ -23,9 +23,9 @@ vprint ctx v = do -- collectDecl collects multiple Def for one function into one collectDecl : List Decl -> List Decl collectDecl Nil = Nil -collectDecl ((Def fc nm cl) :: rest@(Def _ nm' cl' :: xs)) = - if nm == nm' then collectDecl (Def fc nm (cl ++ cl') :: xs) - else (Def fc nm cl :: collectDecl rest) +collectDecl ((FunDef fc nm cl) :: rest@(FunDef _ nm' cl' :: xs)) = + if nm == nm' then collectDecl (FunDef fc nm (cl ++ cl') :: xs) + else (FunDef fc nm cl :: collectDecl rest) collectDecl (x :: xs) = x :: collectDecl xs rpprint : List String → Tm → String @@ -116,8 +116,11 @@ isCandidate _ _ = False findMatches : Context -> Val -> List TopEntry -> M (List String) findMatches ctx ty Nil = pure Nil -findMatches ctx ty ((MkEntry _ name type def) :: xs) = do - let (True) = isCandidate ty type | False => findMatches ctx ty xs +findMatches ctx ty ((MkEntry _ name type def flags) :: xs) = do + let (True) = elem Hint flags | False => findMatches ctx ty xs + let (True) = isCandidate ty type + | False => findMatches ctx ty xs + top <- getTop mc <- readIORef top.metaCtx catchError (do @@ -473,7 +476,7 @@ unify env mode t u = do debug $ \ _ => "expand \{show t} =?= %ref \{show k'}" top <- getTop case lookup k' top of - Just (MkEntry _ name ty (Fn tm)) => do + Just (MkEntry _ name ty (Fn tm) _) => do vtm <- eval Nil CBN tm appvtm <- vappSpine vtm sp' unify env mode t appvtm @@ -483,7 +486,7 @@ unify env mode t u = do debug $ \ _ => "expand %ref \{show k} \{show sp} =?= \{show u}" top <- getTop case lookup k top of - Just (MkEntry _ name ty (Fn tm)) => do + Just (MkEntry _ name ty (Fn tm) _) => do vtm <- eval Nil CBN tm tmsp <- vappSpine vtm sp unify env mode tmsp u @@ -620,7 +623,7 @@ primType : FC -> QName -> M Val primType fc nm = do top <- getTop case lookup nm top of - Just (MkEntry _ name ty (PrimTCon _)) => pure $ VRef fc name Lin + Just (MkEntry _ name ty (PrimTCon _) _) => pure $ VRef fc name Lin _ => error fc "Primitive type \{show nm} not in scope" infer : Context -> Raw -> M (Tm × Val) @@ -688,13 +691,13 @@ getConstructors ctx scfc (VRef fc nm _) = do lookupTCon str = do top <- getTop case lookup nm top of - (Just (MkEntry _ name type (TCon _ names))) => pure names + (Just (MkEntry _ name type (TCon _ names) _)) => pure names _ => error scfc "Not a type constructor \{show nm}" lookupDCon : QName -> M (QName × Int × Tm) lookupDCon nm = do top <- getTop case lookup nm top of - (Just (MkEntry _ name type (DCon _ k str))) => pure (name, k, type) + (Just (MkEntry _ name type (DCon _ k str) _)) => pure (name, k, type) Just _ => error fc "Internal Error: \{show nm} is not a DCon" Nothing => error fc "Internal Error: DCon \{show nm} not found" getConstructors ctx scfc tm = do @@ -946,7 +949,7 @@ buildCase ctx prob scnm scty (dcName, arity, ty) = do -- TODO can we check this when we make the PatCon? top <- getTop case lookup nm top of - (Just (MkEntry _ name type (DCon _ k tcname))) => + (Just (MkEntry _ name type (DCon _ k tcname) _)) => if (tcname /= sctynm) then error fc "Constructor is \{show tcname} expected \{show sctynm}" else pure Nothing @@ -974,7 +977,7 @@ mkPat (tm, icit) = do top <- getTop case splitArgs tm Nil of ((RVar fc nm), b) => case lookupRaw nm top of - (Just (MkEntry _ name type (DCon _ k str))) => do + (Just (MkEntry _ name type (DCon _ k str) _)) => do -- TODO check arity, also figure out why we need reverse bpat <- traverse (mkPat) b pure $ PatCon fc icit name bpat Nothing @@ -1006,7 +1009,7 @@ checkWhere ctx decls body ty = do | _ => check ctx body ty funTy <- check ctx rawtype (VU sigFC) debug $ \ _ => "where clause \{name} : \{rpprint (names ctx) funTy}" - let (Def defFC name' clauses :: decls') = decls + let (FunDef defFC name' clauses :: decls') = decls | x :: _ => error (getFC x) "expected function definition" | _ => error sigFC "expected function definition after this signature" unless (name == name') $ \ _ => error defFC "Expected def for \{name}" @@ -1407,7 +1410,7 @@ infer ctx (RVar fc nm) = go 0 ctx.types go i Nil = do top <- getTop case lookupRaw nm top of - Just (MkEntry _ name ty def) => do + Just (MkEntry _ name ty def _) => do debug $ \ _ => "lookup \{show name} as \{show def}" vty <- eval Nil CBN ty pure (Ref fc name, vty) diff --git a/src/Lib/Erasure.newt b/src/Lib/Erasure.newt index 24fe26b..bfe21d7 100644 --- a/src/Lib/Erasure.newt +++ b/src/Lib/Erasure.newt @@ -19,7 +19,7 @@ getType (Ref fc nm) = do top <- getTop case lookup nm top of Nothing => error fc "\{show nm} not in scope" - (Just (MkEntry _ name type def)) => pure $ Just type + (Just (MkEntry _ name type def _)) => pure $ Just type getType tm = pure Nothing @@ -48,7 +48,7 @@ doAlt : EEnv -> CaseAlt -> M CaseAlt doAlt env (CaseDefault t) = CaseDefault <$> erase env t Nil doAlt env (CaseCons name args t) = do top <- getTop - let (Just (MkEntry _ str type def)) = lookup name top + let (Just (MkEntry _ str type def _)) = lookup name top | _ => error emptyFC "\{show name} dcon missing from context" let env' = piEnv env type args CaseCons name args <$> erase env' t Nil @@ -69,7 +69,7 @@ erase env t sp = case t of top <- getTop case lookup nm top of Nothing => error fc "\{show nm} not in scope" - (Just (MkEntry _ name type def)) => eraseSpine env t sp (Just type) + (Just (MkEntry _ name type def _)) => eraseSpine env t sp (Just type) (Lam fc nm icit rig u) => Lam fc nm icit rig <$> erase ((nm, rig, Nothing) :: env) u Nil -- If we get here, we're looking at a runtime pi type (Pi fc nm icit rig u v) => do diff --git a/src/Lib/Eval.newt b/src/Lib/Eval.newt index 3a8e50b..a14eb17 100644 --- a/src/Lib/Eval.newt +++ b/src/Lib/Eval.newt @@ -70,7 +70,7 @@ tryEval : Env -> Val -> M (Maybe Val) tryEval env (VRef fc k sp) = do top <- getTop case lookup k top of - Just (MkEntry _ name ty (Fn tm)) => + Just (MkEntry _ name ty (Fn tm) _) => catchError ( do debug $ \ _ => "app \{show name} to \{show sp}" @@ -112,7 +112,7 @@ evalCase env mode sc@(VRef _ nm sp) (cc@(CaseCons name nms t) :: xs) = do debug $ \ _ => "ECase \{show nm} \{show sp} \{show nms} \{showTm t}" go env (sp <>> Nil) nms else case lookup nm top of - (Just (MkEntry _ str type (DCon _ k str1))) => evalCase env mode sc xs + (Just (MkEntry _ str type (DCon _ k str1) _)) => evalCase env mode sc xs -- bail for a stuck function _ => pure Nothing where diff --git a/src/Lib/Parser.newt b/src/Lib/Parser.newt index 7dcddd5..c7a3aec 100644 --- a/src/Lib/Parser.newt +++ b/src/Lib/Parser.newt @@ -528,7 +528,7 @@ parseDef = do startBlock $ manySame $ (parseSig <|> parseDef) let body = maybe body (\ decls => RWhere wfc decls body) w -- these get collected later - pure $ Def fc nm ((t, body) :: Nil) -- (MkClause fc Nil t body :: Nil) + pure $ FunDef fc nm ((t, body) :: Nil) -- (MkClause fc Nil t body :: Nil) parsePType : Parser Decl diff --git a/src/Lib/ProcessDecl.newt b/src/Lib/ProcessDecl.newt index 1741d34..d6e0649 100644 --- a/src/Lib/ProcessDecl.newt +++ b/src/Lib/ProcessDecl.newt @@ -96,6 +96,13 @@ impTele tele = map foo tele foo (BI fc nm _ _ , ty) = (BI fc nm Implicit Zero, ty) +checkAlreadyDef : FC → Name → M Unit +checkAlreadyDef fc nm = do + top <- getTop + case lookupRaw nm top of + Nothing => pure MkUnit + Just entry => error fc "\{show nm} is already defined at \{show entry.fc}" + processDecl : List String -> Decl -> M Unit @@ -106,14 +113,12 @@ processTypeSig ns fc names tm = do top <- getTop mc <- readIORef top.metaCtx -- let mstart = length' mc.metas - for names $ \nm => do - let (Nothing) = lookupRaw nm top - | Just entry => error fc "\{show nm} is already defined at \{show entry.fc}" - pure MkUnit + traverse (checkAlreadyDef fc) names ty <- check (mkCtx fc) tm (VU fc) ty <- zonk top 0 Nil ty log 1 $ \ _ => "TypeSig \{unwords names} : \{render 90 $ pprint Nil ty}" - ignore $ for names $ \nm => setDef (QN ns nm) fc ty Axiom + ignore $ for names $ \nm => setDef (QN ns nm) fc ty Axiom Nil + processPrimType : List Name → FC → Name → Maybe Raw → M Unit @@ -121,7 +126,7 @@ processPrimType ns fc nm ty = do top <- getTop ty' <- check (mkCtx fc) (maybe (RU fc) id ty) (VU fc) let arity = cast $ piArity ty' - setDef (QN ns nm) fc ty' (PrimTCon arity) + setDef (QN ns nm) fc ty' (PrimTCon arity) Nil processPrimFn : List String → FC → String → List String → Raw → String → M Unit @@ -135,7 +140,7 @@ processPrimFn ns fc nm used ty src = do Nothing => error fc "\{name} not in scope" Just entry => pure entry.name let arity = piArity ty' - setDef (QN ns nm) fc ty' (PrimFn src arity used') + setDef (QN ns nm) fc ty' (PrimFn src arity used') Nil processDef : List String → FC → String → List (Raw × Raw) → M Unit @@ -146,7 +151,7 @@ processDef ns fc nm clauses = do mc <- readIORef top.metaCtx let (Just entry) = lookupRaw nm top | Nothing => throwError $ E fc "No declaration for \{nm}" - let (MkEntry fc name ty Axiom) = entry + let (MkEntry fc name ty Axiom _) = entry | _ => throwError $ E fc "\{nm} already defined at \{show entry.fc}" log 1 $ \ _ => "check \{nm} at \{render 90 $ pprint Nil ty}" @@ -216,7 +221,7 @@ processClass ns classFC nm tele decls = do let autoPat = foldl mkAutoApp (RVar classFC dcName) fields let lhs = makeLHS (RVar fc name) tele let lhs = RApp classFC lhs autoPat Auto - let decl = Def fc name ((lhs, (RVar fc name)) :: Nil) + let decl = FunDef fc name ((lhs, (RVar fc name)) :: Nil) log 1 $ \ _ => "\{name} : \{render 90 $ pretty funType}" log 1 $ \ _ => "\{render 90 $ pretty decl}" @@ -264,17 +269,20 @@ processInstance ns instfc ty decls = do Just _ => pure MkUnit -- TODO check that the types match Nothing => processDecl ns sigDecl + setFlag (QN ns instname) instfc Hint + -- TODO add to hint dictionary + let (Just decls) = collectDecl <$> decls | _ => do debug $ \ _ => "Forward declaration \{show sigDecl}" let (Ref _ tconName, args) = funArgs codomain | (tm, _) => error tyFC "\{render 90 $ pprint Nil codomain} doesn't appear to be a TCon application" - let (Just (MkEntry _ name type (TCon _ cons))) = lookup tconName top + let (Just (MkEntry _ name type (TCon _ cons) _)) = lookup tconName top | _ => error tyFC "\{show tconName} is not a type constructor" let (con :: Nil) = cons | _ => error tyFC "\{show tconName} has multiple constructors \{show cons}" - let (Just (MkEntry _ _ dcty (DCon _ _ _))) = lookup con top + let (Just (MkEntry _ _ dcty (DCon _ _ _) _)) = lookup con top | _ => error tyFC "can't find constructor \{show con}" vdcty@(VPi _ nm icit rig a b) <- eval Nil CBN dcty | x => error (getFC x) "dcty not Pi" @@ -294,13 +302,14 @@ processInstance ns instfc ty decls = do let ty' = foldr (\ x acc => case the Binder x of (MkBinder fc nm' icit rig ty') => Pi fc nm' icit rig ty' acc) ty tele let nm' = "\{instname},\{nm}" -- we're working with a Tm, so we define directly instead of processDecl - let (Just (Def fc name xs)) = find (\x => case the Decl x of - (Def y name xs) => name == nm + let (Just (FunDef fc name xs)) = find (\x => case the Decl x of + (FunDef y name xs) => name == nm _ => False) decls | _ => error instfc "no definition for \{nm}" - setDef (QN ns nm') fc ty' Axiom - let decl = (Def fc nm' xs) + -- REVIEW if we want to Hint this + setDef (QN ns nm') fc ty' Axiom Nil + let decl = (FunDef fc nm' xs) log 1 $ \ _ => "***" log 1 $ \ _ => "«\{nm'}» : \{render 90 $ pprint Nil ty'}" log 1 $ \ _ => render 80 $ pretty decl @@ -312,7 +321,7 @@ processInstance ns instfc ty decls = do debug $ \ _ => render 80 $ pretty decl processDecl ns decl let (QN _ con') = con - let decl = Def instfc instname ((RVar instfc instname, mkRHS instname conTele (RVar instfc con')) :: Nil) + let decl = FunDef instfc instname ((RVar instfc instname, mkRHS instname conTele (RVar instfc con')) :: Nil) log 1 $ \ _ => "SIGDECL" log 1 $ \ _ => "\{render 90 $ pretty sigDecl}" log 1 $ \ _ => render 80 $ pretty decl @@ -388,20 +397,20 @@ populateConInfo entries = setInfo zero ZeroCon :: setInfo succ SuccCon :: Nil where setInfo : TopEntry → ConInfo → TopEntry - setInfo (MkEntry fc nm dty (DCon _ arity hn)) info = MkEntry fc nm dty (DCon info arity hn) + setInfo (MkEntry fc nm dty (DCon _ arity hn) flags) info = MkEntry fc nm dty (DCon info arity hn) flags setInfo x _ = x checkEnum : TopEntry → Maybe TopEntry - checkEnum (MkEntry fc nm dty (DCon _ 0 hn)) = Just $ MkEntry fc nm dty (DCon EnumCon 0 hn) + checkEnum (MkEntry fc nm dty (DCon _ 0 hn) flags) = Just $ MkEntry fc nm dty (DCon EnumCon 0 hn) flags checkEnum _ = Nothing isZero : TopEntry → Bool - isZero (MkEntry fc nm dty (DCon _ 0 hn)) = True + isZero (MkEntry fc nm dty (DCon _ 0 hn) flags) = True isZero _ = False -- TODO - handle indexes, etc isSucc : TopEntry → Bool - isSucc (MkEntry fc nm dty@(Pi _ _ _ _ (Ref _ a) (Ref _ b)) (DCon _ 1 hn)) = a == b + isSucc (MkEntry fc nm dty@(Pi _ _ _ _ (Ref _ a) (Ref _ b)) (DCon _ 1 hn) _) = a == b isSucc _ = False processData : List String → FC → String → Raw → List Decl → M Unit @@ -412,14 +421,15 @@ processData ns fc nm ty cons = do mc <- readIORef top.metaCtx tyty <- check (mkCtx fc) ty (VU fc) case lookupRaw nm top of - Just (MkEntry _ name type Axiom) => do + Just (MkEntry _ name type Axiom _) => do tyty' <- eval Nil CBN tyty type' <- eval Nil CBN type unifyCatch fc (mkCtx fc) tyty' type' - Just (MkEntry _ name type _) => error fc "\{show nm} already declared" - Nothing => setDef (QN ns nm) fc tyty Axiom + Just _ => error fc "\{show nm} already declared" + Nothing => setDef (QN ns nm) fc tyty Axiom Nil entries <- join <$> (for cons $ \x => case x of (TypeSig fc names tm) => do + traverse (checkAlreadyDef fc) names debug $ \ _ => "check dcon \{show names} \{show tm}" dty <- check (mkCtx fc) tm (VU fc) debug $ \ _ => "dty \{show names} is \{render 90 $ pprint Nil dty}" @@ -433,10 +443,10 @@ processData ns fc nm ty cons = do | (tm, _) => error (getFC tm) "expected \{nm} got \{render 90 $ pprint tnames tm}" when (hn /= QN ns nm) $ \ _ => error (getFC codomain) "Constructor codomain is \{render 90 $ pprint tnames codomain} rather than \{nm}" - pure $ map (\ nm' => (MkEntry fc (QN ns nm') dty (DCon NormalCon (getArity dty) hn))) names + pure $ map (\ nm' => (MkEntry fc (QN ns nm') dty (DCon NormalCon (getArity dty) hn) Nil)) names decl => throwError $ E (getFC decl) "expected constructor declaration") let entries = populateConInfo entries - for entries $ \case (MkEntry name fc dty def) => setDef fc name dty def + for entries $ \case (MkEntry name fc dty def flags) => setDef fc name dty def flags let cnames = map (\x => x.name) entries log 1 $ \ _ => "setDef \{nm} TCon \{show cnames}" @@ -482,7 +492,7 @@ processRecord ns recordFC nm tele cname decls = do let pname = "." ++ name let lhs = foldl (\acc x => case the (BindInfo × Raw) x of (BI fc' nm icit quant, _) => RApp fc' acc (RVar fc' nm) Implicit) (RVar fc pname) tele let lhs = RApp recordFC lhs autoPat Explicit - let pdecl = Def fc pname ((lhs, (RVar fc name)) :: Nil) + let pdecl = FunDef fc pname ((lhs, (RVar fc name)) :: Nil) log 1 $ \ _ => "\{pname} : \{render 90 $ pretty funType}" log 1 $ \ _ => "\{render 90 $ pretty pdecl}" processDecl ns $ TypeSig fc (pname :: Nil) funType @@ -494,7 +504,7 @@ processDecl ns (PMixFix _ _ _ _) = pure MkUnit processDecl ns (TypeSig fc names tm) = processTypeSig ns fc names tm processDecl ns (PType fc nm ty) = processPrimType ns fc nm ty processDecl ns (PFunc fc nm used ty src) = processPrimFn ns fc nm used ty src -processDecl ns (Def fc nm clauses) = processDef ns fc nm clauses +processDecl ns (FunDef fc nm clauses) = processDef ns fc nm clauses processDecl ns (DCheck fc tm ty) = processCheck ns fc tm ty processDecl ns (Class classFC nm tele decls) = processClass ns classFC nm tele decls processDecl ns (Instance instfc ty decls) = processInstance ns instfc ty decls diff --git a/src/Lib/Syntax.newt b/src/Lib/Syntax.newt index ae11709..2dfd80c 100644 --- a/src/Lib/Syntax.newt +++ b/src/Lib/Syntax.newt @@ -107,7 +107,7 @@ Telescope = List (BindInfo × Raw) data Decl = TypeSig FC (List Name) Raw - | Def FC Name (List (Raw × Raw)) -- (List Clause) + | FunDef FC Name (List (Raw × Raw)) | DCheck FC Raw Raw | Data FC Name Raw (List Decl) | ShortData FC Raw (List Raw) @@ -121,7 +121,7 @@ data Decl instance HasFC Decl where getFC (TypeSig x strs tm) = x - getFC (Def x str xs) = x + getFC (FunDef x str xs) = x getFC (DCheck x tm tm1) = x getFC (Data x str tm xs) = x getFC (ShortData x _ _) = x @@ -158,7 +158,7 @@ instance Show BindInfo where instance Show Decl where show (TypeSig _ str x) = foo ("TypeSig" :: show str :: show x :: Nil) - show (Def _ str clauses) = foo ("Def" :: show str :: show clauses :: Nil) + show (FunDef _ str clauses) = foo ("FunDef" :: show str :: show clauses :: Nil) show (Data _ str xs ys) = foo ("Data" :: show str :: show xs :: show ys :: Nil) show (DCheck _ x y) = foo ("DCheck" :: show x :: show y :: Nil) show (PType _ name ty) = foo ("PType" :: name :: show ty :: Nil) @@ -267,7 +267,7 @@ pipeSep = folddoc (\a b => a <+/> text "|" <+> b) instance Pretty Decl where pretty (TypeSig _ nm ty) = spread (map text nm) <+> text ":" <+> nest 2 (pretty ty) - pretty (Def _ nm clauses) = stack $ map prettyPair clauses + pretty (FunDef _ nm clauses) = stack $ map prettyPair clauses where prettyPair : Raw × Raw → Doc prettyPair (a, b) = pretty a <+> text "=" <+> pretty b diff --git a/src/Lib/TopContext.newt b/src/Lib/TopContext.newt index c5273ec..47a2815 100644 --- a/src/Lib/TopContext.newt +++ b/src/Lib/TopContext.newt @@ -47,25 +47,35 @@ emptyTop = do pure $ MkTop EmptyMap Nil Nil EmptyMap mcctx 0 errs EmptyMap -setDef : QName -> FC -> Tm -> Def -> M Unit -setDef name fc ty def = do +setFlag : QName → FC → EFlag → M Unit +setFlag name fc flag = do top <- getTop - let (Nothing) = lookupMap' name top.defs - | Just (MkEntry fc' nm' ty' def') => error fc "\{show name} is already defined at \{show fc'}" + let (Just (MkEntry fc nm ty def flags)) = lookupMap' name top.defs + | Nothing => error fc "\{show name} not declared" modifyTop $ \case MkTop mods imp ns defs metaCtx verbose errors ops => - let defs = (updateMap name (MkEntry fc name ty def) top.defs) in + let defs = (updateMap name (MkEntry fc name ty def (flag :: flags)) defs) in + MkTop mods imp ns defs metaCtx verbose errors ops + +setDef : QName -> FC -> Tm -> Def → List EFlag -> M Unit +setDef name fc ty def flags = do + top <- getTop + let (Nothing) = lookupMap' name top.defs + | Just (MkEntry fc' nm' ty' def' _) => error fc "\{show name} is already defined at \{show fc'}" + modifyTop $ \case + MkTop mods imp ns defs metaCtx verbose errors ops => + let defs = (updateMap name (MkEntry fc name ty def flags) top.defs) in MkTop mods imp ns defs metaCtx verbose errors ops updateDef : QName -> FC -> Tm -> Def -> M Unit updateDef name fc ty def = do top <- getTop - let (Just (MkEntry fc' nm' ty' def')) = lookupMap' name top.defs + let (Just (MkEntry fc' nm' ty' def' flags)) = lookupMap' name top.defs | Nothing => error fc "\{show name} not declared" modifyTop $ \case MkTop mods imp ns defs metaCtx verbose errors ops => - let defs = (updateMap name (MkEntry fc' name ty def) defs) in + let defs = (updateMap name (MkEntry fc' name ty def flags) defs) in MkTop mods imp ns defs metaCtx verbose errors ops addError : Error -> M Unit diff --git a/src/Lib/Types.newt b/src/Lib/Types.newt index 23d23df..734e966 100644 --- a/src/Lib/Types.newt +++ b/src/Lib/Types.newt @@ -328,17 +328,29 @@ instance Show Def where -- entry in the top level context +data EFlag = Hint | Inline + +instance Show EFlag where + show Hint = "hint" + show Inline = "inline" + +instance Eq EFlag where + Hint == Hint = True + Inline == Inline = True + _ == _ = False + record TopEntry where constructor MkEntry fc : FC name : QName type : Tm def : Def + eflags : List EFlag -- FIXME snoc instance Show TopEntry where - show (MkEntry fc name type def) = "\{show name} : \{show type} := \{show def}" + show (MkEntry fc name type def flags) = "\{show name} : \{show type} := \{show def} \{show flags}" record ModContext where constructor MkModCtx diff --git a/src/Main.newt b/src/Main.newt index d3b373e..5b122d3 100644 --- a/src/Main.newt +++ b/src/Main.newt @@ -32,7 +32,7 @@ jsonTopContext = do where jsonDef : TopEntry -> Json -- There is no FC here... - jsonDef (MkEntry fc (QN ns name) type def) = JsonObj + jsonDef (MkEntry fc (QN ns name) type def _) = JsonObj ( ("fc", toJson fc) :: ("name", toJson name) :: ("type", toJson (render 80 $ pprint Nil type) ) diff --git a/tests/TestMap.newt.golden b/tests/TestMap.newt.golden index c4813a7..7183cff 100644 --- a/tests/TestMap.newt.golden +++ b/tests/TestMap.newt.golden @@ -2,9 +2,9 @@ [] [(2, 3)] [(1, 3), (2, 0)] -[(0, (MkUnit)), (1, (MkUnit)), (2, (MkUnit)), (3, (MkUnit)), (4, (MkUnit)), (5, (MkUnit)), (6, (MkUnit)), (7, (MkUnit)), (8, (MkUnit)), (9, (MkUnit)), (10, (MkUnit)), (11, (MkUnit)), (12, (MkUnit)), (13, (MkUnit)), (14, (MkUnit)), (16, (MkUnit)), (17, (MkUnit)), (20, (MkUnit))] -(Just _ (0, (MkUnit))) -(Just _ (20, (MkUnit))) +[(0, "MkUnit"), (1, "MkUnit"), (2, "MkUnit"), (3, "MkUnit"), (4, "MkUnit"), (5, "MkUnit"), (6, "MkUnit"), (7, "MkUnit"), (8, "MkUnit"), (9, "MkUnit"), (10, "MkUnit"), (11, "MkUnit"), (12, "MkUnit"), (13, "MkUnit"), (14, "MkUnit"), (16, "MkUnit"), (17, "MkUnit"), (20, "MkUnit")] +(Just _ (0, "MkUnit")) +(Just _ (20, "MkUnit")) ohne 4 [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 20] ohne 1