diff --git a/Makefile b/Makefile index bf6fa85..50daa40 100644 --- a/Makefile +++ b/Makefile @@ -25,11 +25,6 @@ newt3.js: newt2.js time $(RUNJS) newt2.js src/Main.newt -o newt3.js cmp newt2.js newt3.js -min.js: newt3.js scripts/pack - scripts/pack - gzip -kf min.js - ls -l min.js min.js.gz - test: newt.js scripts/test @@ -60,14 +55,13 @@ clean: audit: .PHONY (cd playground && npm audit) (cd newt-vscode && npm audit) + (cd newt-vscode-lsp && npm audit) lsp.js: ${SRCS} node newt.js src/LSP.newt -o lsp.js -newt-vscode-lsp/src/newt.js: lsp.js .PHONY - echo "import fs from 'fs'\nlet mods = { fs }\nlet require = key => mods[key]\n" > $@ - # HACK - perl -p -e "s/(const LSP_(?:updateFile|checkFile|hoverInfo|codeActionInfo))/export \$$1/" lsp.js >> $@ +newt-vscode-lsp/src/newt.js: ${SRCS} + node newt.js src/LSP.newt -o $@ newt-vscode-lsp/dist/lsp.js: newt-vscode-lsp/src/lsp.ts newt-vscode-lsp/src/newt.js (cd newt-vscode-lsp && node esbuild.js) diff --git a/TODO.md b/TODO.md index 826f812..7ab7d55 100644 --- a/TODO.md +++ b/TODO.md @@ -1,13 +1,19 @@ ## TODO +- [ ] Use looping for TCO + - For single functions at least - I think this would be a performance win. I've learned that the slowness on `bun` goes away if I drop the TCO transform. - [ ] Importing Prelude twice should be an error (currently it causes double hints and breaks auto) - [ ] For errors in other files, point to the import - [x] Unsolved metas should be errors (user metas are fine) - [x] Better syntax for forward declared data (so we can distinguish from functions) - [ ] maybe allow "Main" module name for any file -- [ ] Restore "add missing cases" for LSP mode -- [ ] Case split for LSP mode +- [ ] Put `Def` on `Ref` + - It may be Axiom for forward/recursive functions, but it would get us DCon and TCon info without lookup - and may save passing around the Ref2 (+lookup) during Compilation. +- [x] Restore "add missing cases" for LSP mode +- [x] Case split for LSP mode +- [x] Require lowercase pattern variables + - I accidentally misspell a constructor and end up with a wildcard. - [ ] Leverage LSP code for web playground - [ ] Improve handling of names: - We need FC on names in a lot of places @@ -354,6 +360,7 @@ - Seems like this would be tricky as soon as the user starts peeling off the tail or consing them - [ ] magic newtype? (drop them in codegen) - Needed before we newtype IO, so the tail recursion still works + - Without handling erased values, there are only two instances in the compiler code. - [x] vscode: syntax highlighting for String - [ ] add `poper` or variant of `pfunc` that maps to an operator, giving the js operator and precedence on RHS - This has now been hard-coded in codegen, but a syntax or something would be better. diff --git a/bootstrap/newt.js b/bootstrap/newt.js index 5f18ed2..dab66fc 100644 --- a/bootstrap/newt.js +++ b/bootstrap/newt.js @@ -1,8 +1,8 @@ -"use strict"; +import fs from 'fs' const bouncer = (f,ini) => { let obj = ini; while (obj.tag) obj = f(obj); return obj.h0 }; const Lib_Types_errorMsg = ( _$$0 ) => (( (_$$0.tag) == (1) ? _$$0.h2 : _$$0.h1 )); const Lib_Types_Lib_Common_HasFC$20Lib_Common_Error$2CgetFC = ( _$$0 ) => (( (_$$0.tag) == (1) ? _$$0.h0 : _$$0.h0 )); -const Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow = ( _$$0 ) => ((((((((((("") + (_$$0.h0)) + (":")) + (Prelude_showInt((_$$0.h1.h0) + (1)))) + (":")) + (Prelude_showInt((_$$0.h1.h1) + (1)))) + ("--")) + (Prelude_showInt((_$$0.h1.h2) + (1)))) + (":")) + (Prelude_showInt((_$$0.h1.h3) + (2)))) + ("")); +const Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow = ( _$$0 ) => ((((((((((("") + (_$$0.h0)) + (":")) + (Prelude_showInt((_$$0.h1.h0) + (1)))) + (":")) + (Prelude_showInt((_$$0.h1.h1) + (1)))) + ("--")) + (Prelude_showInt((_$$0.h1.h2) + (1)))) + (":")) + (Prelude_showInt((_$$0.h1.h3) + (1)))) + ("")); const Prelude_showInt = (i) => String(i); const Node_exitFailure = (_, msg) => { console.log(msg); @@ -11,7 +11,9 @@ const Node_exitFailure = (_, msg) => { const Prelude_MkIORes = ( h1, h2 ) => ({ tag: 0, h1: h1, h2: h2 }); const Prelude_MkUnit = 0; const Prelude_primPutStrLn = (s) => (w) => { - require('fs').writeSync(1, s + '\n') + // https://nodejs.org/api/process.html#a-note-on-process-io + // Previously console.log, but that is _not_ always synchronous + fs.writeSync(1, s + '\n') return Prelude_MkIORes(Prelude_MkUnit,w) }; const Prelude_Prelude_Ord$20Prim_String$2Ccompare = ( _$$0, _$$1 ) => (Prelude_jsCompare(null, _$$0, _$$1)); @@ -23,8 +25,8 @@ const Data_SortedMap_EmptyMap = ( h2 ) => ({ tag: 0, h2: h2 }); const Prelude_Nil = ( ) => ({ tag: 0 }); const Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare = ( _$$0, _$$1 ) => { const sc$$6 = (_$$0.h0) == (_$$1.h0); switch (sc$$6) { case true: return Prelude_jsCompare(null, _$$0.h1, _$$1.h1); case false: return Prelude_jsCompare(null, _$$0.h0, _$$1.h0); } }; const Lib_Types_MC = ( h0, h1, h2, h3 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3 }); -const Lib_Types_MkTop = ( h0, h1, h2, h3, h4, h5, h6, h7, h8 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4, h5: h5, h6: h6, h7: h7, h8: h8 }); -const Lib_TopContext_emptyTop = Lib_Types_MkTop(Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Prelude_Prelude_Ord$20Prim_String$2Ccompare(eta, eta1)))), Prelude_Nil(), Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), "", Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), Lib_Types_MC(Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), Prelude_Nil(), 0, 0), 0, Prelude_Nil(), Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Prelude_Prelude_Ord$20Prim_String$2Ccompare(eta, eta1))))); +const Lib_Types_MkTop = ( h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4, h5: h5, h6: h6, h7: h7, h8: h8, h9: h9 }); +const Lib_TopContext_emptyTop = Lib_Types_MkTop(Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Prelude_Prelude_Ord$20Prim_String$2Ccompare(eta, eta1)))), Prelude_Nil(), Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), Prelude_Nil(), "", Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), Lib_Types_MC(Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), Prelude_Nil(), 0, 0), 0, Prelude_Nil(), Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Prelude_Prelude_Ord$20Prim_String$2Ccompare(eta, eta1))))); const Lib_Common_MkBounds = ( h0, h1, h2, h3 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3 }); const Lib_Common_MkFC = ( h0, h1 ) => ({ tag: 0, h0: h0, h1: h1 }); const Lib_Common_emptyFC = Lib_Common_MkFC("", Lib_Common_MkBounds(0, 0, 0, 0)); @@ -46,7 +48,7 @@ const Prelude_arrayToList = (a,arr) => { }; const Prelude_lines = (s) => Prelude_arrayToList(null,s.split('\n')); const Lib_Common_showError_go$27 = ( _, _1, _2, _3, _$$5, _$$6 ) => (bouncer(Lib_Common_REC_showError_go$27, { tag: 1, h0: _, h1: _1, h2: _2, h3: _3, h4: null, h5: _$$5, h6: _$$6 })); -const Lib_Common_REC_showError_go$27 = ( arg ) => { if ((arg.h6.tag) == (1)) { const sc$$10 = (arg.h5) == (arg.h2.h1.h0); switch (sc$$10) { case true: { const width = ((arg.h2.h1.h3) - (arg.h2.h1.h1)) + (1); return { tag: 0, h0: ((((((" ") + (arg.h6.h1)) + ("\n ")) + (Prelude_replicate(Prelude_intToNat(arg.h2.h1.h1), " "))) + ("")) + (Prelude_replicate(Prelude_intToNat(width), "^"))) + ("\n") }; break; } case false: { const sc$$11 = Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, (arg.h2.h1.h0) - (3), arg.h5), 0); switch (sc$$11) { case true: return { tag: 0, h0: (" ") + ((arg.h6.h1) + (("\n") + (Lib_Common_showError_go$27(arg.h0, arg.h1, arg.h2, arg.h3, (arg.h5) + (1), arg.h6.h2)))) }; case false: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: (arg.h5) + (1), h6: arg.h6.h2 }; } break; } } } else { return { tag: 0, h0: "" }; } }; +const Lib_Common_REC_showError_go$27 = ( arg ) => { if ((arg.h6.tag) == (1)) { const sc$$10 = (arg.h5) == (arg.h2.h1.h0); switch (sc$$10) { case true: { const width = (arg.h2.h1.h3) - (arg.h2.h1.h1); return { tag: 0, h0: ((((((" ") + (arg.h6.h1)) + ("\n ")) + (Prelude_replicate(Prelude_intToNat(arg.h2.h1.h1), " "))) + ("")) + (Prelude_replicate(Prelude_intToNat(width), "^"))) + ("\n") }; break; } case false: { const sc$$11 = Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, (arg.h2.h1.h0) - (3), arg.h5), 0); switch (sc$$11) { case true: return { tag: 0, h0: (" ") + ((arg.h6.h1) + (("\n") + (Lib_Common_showError_go$27(arg.h0, arg.h1, arg.h2, arg.h3, (arg.h5) + (1), arg.h6.h2)))) }; case false: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: (arg.h5) + (1), h6: arg.h6.h2 }; } break; } } } else { return { tag: 0, h0: "" }; } }; const Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_ = ( _$$0, _$$1 ) => { switch (_$$1) { case 2: switch (_$$0) { case 2: return true; default: return false; } break; case 1: switch (_$$0) { case 1: return true; default: return false; } break; case 0: switch (_$$0) { case 0: return true; default: return false; } break; } }; const Prelude_intToNat = (n) => n>0?n:0; const Prelude_natToInt = (n) => n; @@ -56,9 +58,9 @@ const Lib_Common_REC_showError_go = ( arg ) => { if ((arg.h7.tag) == (1)) { cons const Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow = ( _$$0 ) => { switch (_$$0.h0) { case "": return _$$0.h1; default: return (_$$0.h0) + ((".") + (_$$0.h1)); } }; const Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO = ( _$$1 ) => (Lib_Types_MkM(( tc ) => (( eta ) => (Prelude_Prelude_Monad$20Prelude_IO$2Cbind(_$$1, ( result ) => (( eta ) => (Prelude_MkIORes(Prelude_Right(Prelude__$2C_(tc, result)), eta))), eta))))); const Prelude_Prelude_Monad$20Prelude_IO$2Cbind = ( _$$2, _$$3, w ) => { const sc$$5 = _$$2(w); return _$$3(sc$$5.h1)(sc$$5.h2); }; -const Main_runCommand = ( _$$0 ) => { switch (_$$0.tag) { case 6: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_jsonTopContext, ( json ) => (Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn((("TOP:") + (Lib_Common_renderJson(json))) + (""))))); case 5: return Main_replHelp; case 4: return Main_browseTop(_$$0.h0); case 3: return Main_getDoc(_$$0.h0); case 2: return ( (_$$0.h0.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, (1) + (tc.h6), tc.h7, tc.h8)))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, _$$0.h0.h1, tc.h7, tc.h8)))) ); case 1: return Main_writeSource(_$$0.h0); case 0: return Main_processFile(_$$0.h0); } }; +const Main_runCommand = ( _$$0 ) => { switch (_$$0.tag) { case 6: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_jsonTopContext, ( json ) => (Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn((("TOP:") + (Lib_Common_renderJson(json))) + (""))))); case 5: return Main_replHelp; case 4: return Main_browseTop(_$$0.h0); case 3: return Main_getDoc(_$$0.h0); case 2: return ( (_$$0.h0.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, tc.h6, (1) + (tc.h7), tc.h8, tc.h9)))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, tc.h6, _$$0.h0.h1, tc.h8, tc.h9)))) ); case 1: return Main_writeSource(_$$0.h0); case 0: return Main_processFile(_$$0.h0); } }; const Main_processFile = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn((("*** Process ") + (_$$0)) + (""))), ( _ ) => { const parts = Data_List1_split1(_$$0, "/"); const sc$$3 = Data_List1_unsnoc(parts); let dir; const sc$$8 = Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29$2C_$3D$3D_(Prelude_Prelude_Eq$20Prim_String, sc$$3.h2, Prelude_Nil()); switch (sc$$8) { case true: { dir = "."; break; } case false: { dir = Prelude_joinBy("/", sc$$3.h2); break; } } const sc$$9 = Data_List1_splitFileName(sc$$3.h3); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _1 ) => ((((((("") + (dir)) + (" ")) + (sc$$9.h2)) + (" ")) + (sc$$9.h3)) + (""))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Node_readFile(_$$0)), ( $$sc ) => { if (($$sc.tag) == (1)) { const sc$$20 = Lib_Tokenizer_tokenise(_$$0, $$sc.h2); if ((sc$$20.tag) == (1)) { const sc$$24 = Lib_Parser_Impl_partialParse(_$$0, Lib_Parser_parseModHeader, Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Prelude_Prelude_Ord$20Prim_String$2Ccompare(eta, eta1)))), sc$$20.h2); if ((sc$$24.tag) == (1)) { const modns = Prelude_split(sc$$24.h2.h2.h3, "."); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Util_getBaseDir(_$$0, sc$$24.h2.h2.h2, modns), ( base ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessModule_invalidateModule(sc$$24.h2.h2.h3), ( _2 ) => { const repo = Main_dirFileSource(base); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessModule_processModule(Lib_Common_emptyFC, repo, Prelude_Nil(), sc$$24.h2.h2.h3), ( $$sc1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_showErrors(_$$0, $$sc1.h0), ( _3 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0))))))); }))); } else { return Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(sc$$24.h2.h2), eta)))); } } else { return Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(sc$$20.h2), eta)))); } } else { return Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_MkFC(_$$0, Lib_Common_MkBounds(0, 0, 0, 0)), (((("error reading ") + (_$$0)) + (": ")) + ($$sc.h2)) + (""))), eta)))); } }))); })); -const Main_showErrors = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (( (top.h7.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( _$$5 ) => (Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn(Lib_Common_showError(_$$1, _$$5)))), top.h7), ( _ ) => (Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_MkFC(_$$0, Lib_Common_MkBounds(0, 0, 0, 0)), "Compile failed")), eta)))))) )))); +const Main_showErrors = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (( (top.h8.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( _$$5 ) => (Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn(Lib_Common_showError(_$$1, _$$5)))), top.h8), ( _ ) => (Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_MkFC(_$$0, Lib_Common_MkBounds(0, 0, 0, 0)), "Compile failed")), eta)))))) )))); const Lib_Types_Prelude_Applicative$20Lib_Types_M$2C_$3C$2A$3E_ = ( _$$2, _$$3 ) => (Lib_Types_MkM(( tc ) => (( eta ) => (Prelude_Prelude_Monad$20Prelude_IO$2Cbind(_$$2.h1(tc), ( $$sc ) => (( ($$sc.tag) == (1) ? ( eta ) => (Prelude_Prelude_Monad$20Prelude_IO$2Cbind(_$$3.h1($$sc.h2.h2), ( $$sc1 ) => (( ($$sc1.tag) == (1) ? ( eta ) => (Prelude_MkIORes(Prelude_Right(Prelude__$2C_($$sc1.h2.h2, $$sc.h2.h3($$sc1.h2.h3))), eta)) : ( eta ) => (Prelude_MkIORes(Prelude_Left($$sc1.h2), eta)) )), eta)) : ( eta ) => (Prelude_MkIORes(Prelude_Left($$sc.h2), eta)) )), eta))))); const Prelude_MkApplicative = ( h1, h2 ) => ({ tag: 0, h1: h1, h2: h2 }); const Lib_Types_Prelude_Applicative$20Lib_Types_M = Prelude_MkApplicative(( a ) => (( eta ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(eta))), ( a ) => (( b ) => (( eta ) => (( eta1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2C_$3C$2A$3E_(eta, eta1)))))); @@ -68,7 +70,7 @@ const Prelude__$3C$2A$3E_ = ( _$$1 ) => (( a ) => (( b ) => (_$$1.h2(null)(null) const Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind = ( _$$2, _$$3 ) => (Lib_Types_MkM(( tc ) => (( eta ) => (Prelude_Prelude_Monad$20Prelude_IO$2Cbind(_$$2.h1(tc), ( $$sc ) => (( ($$sc.tag) == (1) ? Lib_Types__runM(_$$3($$sc.h2.h3))($$sc.h2.h2) : ( eta ) => (Prelude_MkIORes(Prelude_Left($$sc.h2), eta)) )), eta))))); const Lib_Types__runM = ( $$self$$1 ) => ($$self$$1.h1); const Lib_Types_getTop = Lib_Types_MkM(( tc ) => (( eta ) => (Prelude_MkIORes(Prelude_Right(Prelude__$2C_(tc, tc)), eta)))); -const Lib_ProcessModule_processModule = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$6 = Data_SortedMap_lookupMap$27(_$$3, top.h0); if ((sc$$6.tag) == (1)) { const sc$$8 = (_$$3) == (Lib_Common_primNS); switch (sc$$8) { case false: { const parts = Prelude_split(_$$3, "."); const fn = (Prelude_joinBy("/", parts)) + (".newt"); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessModule__getFile(_$$1)(_$$0)(fn), ( $$sc ) => { const sc$$17 = Lib_Tokenizer_tokenise($$sc.h2, $$sc.h3); if ((sc$$17.tag) == (1)) { const sc$$21 = Lib_Parser_Impl_partialParse($$sc.h2, Lib_Parser_parseModHeader, top.h8, sc$$17.h2); return ( (sc$$21.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ((("scan imports for module ") + (sc$$21.h2.h2.h3)) + (""))), ( _ ) => { const sc$$38 = (_$$3) == (sc$$21.h2.h2.h3); switch (sc$$38) { case true: { const sc$$39 = Lib_Parser_Impl_partialParse($$sc.h2, Lib_Parser_parseImports, sc$$21.h2.h3.h2, sc$$21.h2.h3.h3); return ( (sc$$39.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, sc$$39.h2.h2, ( $$case ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_elem(Prelude_Prelude_Eq$20Prim_String, $$case.h1.h3, _$$2), ( _1 ) => (Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E($$case.h1.h2, (((("import loop ") + (_$$3)) + (" → ")) + ($$case.h1.h3)) + (""))), eta)))))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessModule_processModule($$case.h1.h2, _$$1, Prelude__$3A$3A_(_$$3, _$$2), $$case.h1.h3), ( _2 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn($$case.h1.h3))))))), ( imported ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessModule_processModule(sc$$21.h2.h2.h2, _$$1, Prelude__$3A$3A_(_$$3, _$$2), Lib_Common_primNS), ( _1 ) => { const imported1 = Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(imported, Prelude__$3A$3A_(Lib_Common_primNS, Prelude_Nil())); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn((("module ") + (sc$$21.h2.h2.h3)) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _3 ) => (("MODNS ") + (_$$3))), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessModule_parseDecls($$sc.h2, top1.h8, sc$$39.h2.h3.h3, Prelude_Lin()), ( $$sc1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top2 ) => { const freshMC = Lib_Types_MC(Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), Prelude_Nil(), 0, 0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, imported1, Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), _$$3, Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), freshMC, tc.h6, tc.h7, $$sc1.h3)))), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, imported1, ( ns ) => { const sc$$67 = Data_SortedMap_lookupMap$27(ns, top2.h0); return ( (sc$$67.tag) == (0) ? Lib_ProcessModule_importHints(Data_SortedMap_listValues(sc$$67.h1.h1)) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("namespace ") + (ns)) + (" missing"))), eta)))) ); }), ( _5 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _6 ) => ("process Decls")), ( _6 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_ProcessModule_processModule_tryProcessDecl(_$$0, _$$1, _$$2, _$$3, $$sc.h3, _$$3, eta)), Lib_Elab_collectDecl($$sc1.h2)), ( _7 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top3 ) => { const mod = Lib_Types_MkModCtx($$sc.h3, top3.h4, top3.h5, top3.h8, imported1, top3.h7); const modules = Data_SortedMap_updateMap(_$$3, mod, top3.h0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(modules, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, tc.h6, tc.h7, tc.h8)))), ( _8 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_logMetas(Prelude_reverse()(Data_SortedMap_listValues(top3.h5.h0))), ( _9 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(mod))))); }))))))))); }))))))))); }))) : Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(sc$$39.h2.h2), eta)))) ); break; } default: return Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$21.h2.h2.h2, (((("module name ") + (sc$$21.h2.h2.h3)) + (" doesn't match file name ")) + ($$sc.h2)) + (""))), eta)))); } }) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(sc$$21.h2.h2), eta)))) ); } else { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(sc$$17.h2), eta)))); } }); break; } default: return Lib_ProcessModule_addPrimitives; } } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(sc$$6.h1); } })); +const Lib_ProcessModule_processModule = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$6 = Data_SortedMap_lookupMap$27(_$$3, top.h0); if ((sc$$6.tag) == (1)) { const sc$$8 = (_$$3) == (Lib_Common_primNS); switch (sc$$8) { case false: { const parts = Prelude_split(_$$3, "."); const fn = (Prelude_joinBy("/", parts)) + (".newt"); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessModule__getFile(_$$1)(_$$0)(fn), ( $$sc ) => { const sc$$17 = Lib_Tokenizer_tokenise($$sc.h2, $$sc.h3); if ((sc$$17.tag) == (1)) { const sc$$21 = Lib_Parser_Impl_partialParse($$sc.h2, Lib_Parser_parseModHeader, top.h9, sc$$17.h2); return ( (sc$$21.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ((("scan imports for module ") + (sc$$21.h2.h2.h3)) + (""))), ( _ ) => { const sc$$38 = (_$$3) == (sc$$21.h2.h2.h3); switch (sc$$38) { case true: { const sc$$39 = Lib_Parser_Impl_partialParse($$sc.h2, Lib_Parser_parseImports, sc$$21.h2.h3.h2, sc$$21.h2.h3.h3); return ( (sc$$39.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, sc$$39.h2.h2, ( $$case ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_elem(Prelude_Prelude_Eq$20Prim_String, $$case.h1.h3, _$$2), ( _1 ) => (Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E($$case.h1.h2, (((("import loop ") + (_$$3)) + (" → ")) + ($$case.h1.h3)) + (""))), eta)))))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessModule_processModule($$case.h1.h2, _$$1, Prelude__$3A$3A_(_$$3, _$$2), $$case.h1.h3), ( _2 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn($$case.h1.h3))))))), ( imported ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessModule_processModule(sc$$21.h2.h2.h2, _$$1, Prelude__$3A$3A_(_$$3, _$$2), Lib_Common_primNS), ( _1 ) => { const imported1 = Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(imported, Prelude__$3A$3A_(Lib_Common_primNS, Prelude_Nil())); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn((("module ") + (sc$$21.h2.h2.h3)) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _3 ) => (("MODNS ") + (_$$3))), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessModule_parseDecls($$sc.h2, top1.h9, sc$$39.h2.h3.h3, Prelude_Lin()), ( $$sc1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top2 ) => { const freshMC = Lib_Types_MC(Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), Prelude_Nil(), 0, 0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, imported1, Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), Prelude_Nil(), _$$3, Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), freshMC, tc.h7, tc.h8, $$sc1.h3)))), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, imported1, ( ns ) => { const sc$$67 = Data_SortedMap_lookupMap$27(ns, top2.h0); return ( (sc$$67.tag) == (0) ? Lib_ProcessModule_importHints(Data_SortedMap_listValues(sc$$67.h1.h1)) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("namespace ") + (ns)) + (" missing"))), eta)))) ); }), ( _5 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _6 ) => ("process Decls")), ( _6 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_ProcessModule_processModule_tryProcessDecl(_$$0, _$$1, _$$2, _$$3, $$sc.h3, _$$3, eta)), Lib_Elab_collectDecl($$sc1.h2)), ( _7 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_logMetas(Prelude_reverse()(Data_SortedMap_listValues(top2.h6.h0))), ( _8 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top3 ) => { const mod = Lib_Types_MkModCtx($$sc.h3, top3.h5, top3.h6, top3.h9, imported1, top3.h8, top3.h3); const modules = Data_SortedMap_updateMap(_$$3, mod, top3.h0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(modules, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, tc.h6, tc.h7, tc.h8, tc.h9)))), ( _9 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(mod))); }))))))))))); }))))))))); }))) : Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(sc$$39.h2.h2), eta)))) ); break; } default: return Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$21.h2.h2.h2, (((("module name ") + (sc$$21.h2.h2.h3)) + (" doesn't match file name ")) + ($$sc.h2)) + (""))), eta)))); } }) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(sc$$21.h2.h2), eta)))) ); } else { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(sc$$17.h2), eta)))); } }); break; } default: return Lib_ProcessModule_addPrimitives; } } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(sc$$6.h1); } })); const Lib_Common_primNS = "Prim"; const Lib_Types_putTop = ( _$$0 ) => (Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Right(Prelude__$2C_(_$$0, 0)), eta))))); const Data_SortedMap_updateMap = ( _$$2, _$$3, _$$4 ) => { if ((_$$4.tag) == (1)) { const sc$$10 = Data_SortedMap_insertT23(_$$4.h3, _$$2, _$$3, _$$4.h4); return ( (sc$$10.tag) == (1) ? Data_SortedMap_MapOf((1) + (_$$4.h2), _$$4.h3, Data_SortedMap_Node2(sc$$10.h2.h2, sc$$10.h2.h3.h2, sc$$10.h2.h3.h3)) : Data_SortedMap_MapOf(_$$4.h2, _$$4.h3, sc$$10.h2) ); } else { return Data_SortedMap_MapOf(0, _$$4.h2, Data_SortedMap_Leaf(_$$2, _$$3)); } }; @@ -77,11 +79,11 @@ const Data_SortedMap_MapOf = ( h2, h3, h4 ) => ({ tag: 1, h2: h2, h3: h3, h4: const Data_SortedMap_Node2 = ( h3, h4, h5 ) => ({ tag: 1, h3: h3, h4: h4, h5: h5 }); const Data_SortedMap_insertT23 = ( _$$3, _$$4, _$$5, _$$6 ) => { switch (_$$6.tag) { case 2: { const sc$$15 = _$$3(_$$4)(_$$6.h4); switch (sc$$15) { case 2: { const sc$$16 = _$$3(_$$4)(_$$6.h6); switch (sc$$16) { case 2: { const sc$$17 = Data_SortedMap_insertT23(_$$3, _$$4, _$$5, _$$6.h7); return ( (sc$$17.tag) == (1) ? Prelude_Right(Prelude__$2C_(Data_SortedMap_Node2(_$$6.h3, _$$6.h4, _$$6.h5), Prelude__$2C_(_$$6.h6, Data_SortedMap_Node2(sc$$17.h2.h2, sc$$17.h2.h3.h2, sc$$17.h2.h3.h3)))) : Prelude_Left(Data_SortedMap_Node3(_$$6.h3, _$$6.h4, _$$6.h5, _$$6.h6, sc$$17.h2)) ); break; } default: { const sc$$17 = Data_SortedMap_insertT23(_$$3, _$$4, _$$5, _$$6.h5); return ( (sc$$17.tag) == (1) ? Prelude_Right(Prelude__$2C_(Data_SortedMap_Node2(_$$6.h3, _$$6.h4, sc$$17.h2.h2), Prelude__$2C_(sc$$17.h2.h3.h2, Data_SortedMap_Node2(sc$$17.h2.h3.h3, _$$6.h6, _$$6.h7)))) : Prelude_Left(Data_SortedMap_Node3(_$$6.h3, _$$6.h4, sc$$17.h2, _$$6.h6, _$$6.h7)) ); break; } } break; } default: { const sc$$16 = Data_SortedMap_insertT23(_$$3, _$$4, _$$5, _$$6.h3); return ( (sc$$16.tag) == (1) ? Prelude_Right(Prelude__$2C_(Data_SortedMap_Node2(sc$$16.h2.h2, sc$$16.h2.h3.h2, sc$$16.h2.h3.h3), Prelude__$2C_(_$$6.h4, Data_SortedMap_Node2(_$$6.h5, _$$6.h6, _$$6.h7)))) : Prelude_Left(Data_SortedMap_Node3(sc$$16.h2, _$$6.h4, _$$6.h5, _$$6.h6, _$$6.h7)) ); break; } } break; } case 1: { const sc$$13 = _$$3(_$$4)(_$$6.h4); switch (sc$$13) { case 2: { const sc$$14 = Data_SortedMap_insertT23(_$$3, _$$4, _$$5, _$$6.h5); return ( (sc$$14.tag) == (1) ? Prelude_Left(Data_SortedMap_Node3(_$$6.h3, _$$6.h4, sc$$14.h2.h2, sc$$14.h2.h3.h2, sc$$14.h2.h3.h3)) : Prelude_Left(Data_SortedMap_Node2(_$$6.h3, _$$6.h4, sc$$14.h2)) ); break; } default: { const sc$$14 = Data_SortedMap_insertT23(_$$3, _$$4, _$$5, _$$6.h3); return ( (sc$$14.tag) == (1) ? Prelude_Left(Data_SortedMap_Node3(sc$$14.h2.h2, sc$$14.h2.h3.h2, sc$$14.h2.h3.h3, _$$6.h4, _$$6.h5)) : Prelude_Left(Data_SortedMap_Node2(sc$$14.h2, _$$6.h4, _$$6.h5)) ); break; } } break; } case 0: { const sc$$11 = _$$3(_$$4)(_$$6.h2); switch (sc$$11) { case 2: return Prelude_Right(Prelude__$2C_(Data_SortedMap_Leaf(_$$6.h2, _$$6.h3), Prelude__$2C_(_$$6.h2, Data_SortedMap_Leaf(_$$4, _$$5)))); case 1: return Prelude_Left(Data_SortedMap_Leaf(_$$4, _$$5)); case 0: return Prelude_Right(Prelude__$2C_(Data_SortedMap_Leaf(_$$4, _$$5), Prelude__$2C_(_$$4, Data_SortedMap_Leaf(_$$6.h2, _$$6.h3)))); } break; } } }; const Data_SortedMap_Node3 = ( h3, h4, h5, h6, h7 ) => ({ tag: 2, h3: h3, h4: h4, h5: h5, h6: h6, h7: h7 }); -const Lib_Types_MkModCtx = ( h0, h1, h2, h3, h4, h5 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4, h5: h5 }); +const Lib_Types_MkModCtx = ( h0, h1, h2, h3, h4, h5, h6 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4, h5: h5, h6: h6 }); const Lib_Types_PrimFn = ( h0, h1, h2 ) => ({ tag: 5, h0: h0, h1: h1, h2: h2 }); const Lib_Types_Erased = ( h0 ) => ({ tag: 11, h0: h0 }); const Lib_Common_QN = ( h0, h1 ) => ({ tag: 0, h0: h0, h1: h1 }); -const Lib_TopContext_setDef = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$6 = Data_SortedMap_lookupMap$27(_$$0, top.h4); return ( (sc$$6.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, Data_SortedMap_updateMap(_$$0, Lib_Types_MkEntry(_$$1, _$$0, _$$2, _$$3, _$$4), tc.h4), tc.h5, tc.h6, tc.h7, tc.h8)))) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (" is already defined at ")) + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(sc$$6.h1.h0))) + (""))), eta)))) ); })); +const Lib_TopContext_setDef = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$6 = Data_SortedMap_lookupMap$27(_$$0, top.h5); return ( (sc$$6.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, Data_SortedMap_updateMap(_$$0, Lib_Types_MkEntry(_$$1, _$$0, _$$2, _$$3, _$$4), tc.h5), tc.h6, tc.h7, tc.h8, tc.h9)))) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (" is already defined at ")) + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(sc$$6.h1.h0))) + (""))), eta)))) ); })); const Lib_Types_MkEntry = ( h0, h1, h2, h3, h4 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); const Data_SortedMap_lookupMap$27 = ( _$$2, _$$3 ) => (( (_$$3.tag) == (1) ? Prelude_Prelude_Functor$20Prelude_Maybe$2Cmap(( _$$21 ) => (_$$21.h3), Data_SortedMap_lookupT23(_$$3.h3, _$$2, _$$3.h4)) : Prelude_Nothing() )); const Prelude_Nothing = ( ) => ({ tag: 1 }); @@ -90,7 +92,7 @@ const Data_SortedMap_REC_lookupT23 = ( arg ) => { switch (arg.h5.tag) { case 2: const Prelude_Just = ( h1 ) => ({ tag: 0, h1: h1 }); const Prelude_Prelude_Functor$20Prelude_Maybe$2Cmap = ( _$$2, _$$3 ) => (( (_$$3.tag) == (1) ? Prelude_Nothing() : Prelude_Just(_$$2(_$$3.h1)) )); const Lib_Syntax_PType = ( h0, h1, h2 ) => ({ tag: 5, h0: h0, h1: h1, h2: h2 }); -const Lib_ProcessDecl_processDecl = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case 10: return Lib_ProcessDecl_processRecord(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case 9: return Lib_ProcessDecl_processInstance(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case 8: return Lib_ProcessDecl_processClass(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3); case 7: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); case 6: return Lib_ProcessDecl_processPrimFn(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case 5: return Lib_ProcessDecl_processPrimType(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case 4: return Lib_ProcessDecl_processShortData(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case 3: return ( (_$$1.h3.tag) == (1) ? Lib_ProcessDecl_processTypeSig(_$$0, _$$1.h0, Prelude__$3A$3A_(_$$1.h1.h3, Prelude_Nil()), _$$1.h2) : Lib_ProcessDecl_processData(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3.h1) ); case 2: return Lib_ProcessDecl_processCheck(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case 1: return Lib_ProcessDecl_processDef(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case 0: return Lib_ProcessDecl_processTypeSig(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); } }; +const Lib_ProcessDecl_processDecl = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case 11: return Lib_ProcessDecl_processExports(_$$0, _$$1.h0, _$$1.h1); case 10: return Lib_ProcessDecl_processRecord(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case 9: return Lib_ProcessDecl_processInstance(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case 8: return Lib_ProcessDecl_processClass(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3); case 7: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); case 6: return Lib_ProcessDecl_processPrimFn(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case 5: return Lib_ProcessDecl_processPrimType(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case 4: return Lib_ProcessDecl_processShortData(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case 3: return ( (_$$1.h3.tag) == (1) ? Lib_ProcessDecl_processTypeSig(_$$0, _$$1.h0, Prelude__$3A$3A_(_$$1.h1.h3, Prelude_Nil()), _$$1.h2) : Lib_ProcessDecl_processData(_$$0, _$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3.h1) ); case 2: return Lib_ProcessDecl_processCheck(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case 1: return Lib_ProcessDecl_processDef(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); case 0: return Lib_ProcessDecl_processTypeSig(_$$0, _$$1.h0, _$$1.h1, _$$1.h2); } }; const Lib_ProcessDecl_processTypeSig = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_ProcessDecl_checkAlreadyDef(_$$1, eta)), _$$2), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_MkCtx(0, Prelude_Nil(), Prelude_Nil(), Prelude_Nil(), _$$1), _$$3, Lib_Types_VU(_$$1)), ( ty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _2 ) => ((((("TypeSig ") + (Prelude_joinBy(" ", _$$2))) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), ty))), Prelude_Lin()))) + (""))), ( _2 ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( _$$31 ) => (0), Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, _$$2, ( nm ) => (Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm), _$$1, ty, Lib_Types_Axiom, Prelude_Nil()))))))))))))))); const Lib_Types_Axiom = { tag: 0 }; const Prelude_MkTraversable = ( h1 ) => ({ tag: 0, h1: h1 }); @@ -176,11 +178,11 @@ const Prelude_listToArray = const Prelude_fastConcat = (xs) => Prelude_listToArray(null, xs).join(''); const Prelude_joinBy = ( _$$0, _$$1 ) => (bouncer(Prelude_REC_joinBy, { tag: 1, h0: _$$0, h1: _$$1 })); const Prelude_REC_joinBy = ( arg ) => (( (arg.h1.tag) == (1) ? ( (arg.h1.h2.tag) == (1) ? { tag: 1, h0: arg.h0, h1: Prelude__$3A$3A_((arg.h1.h1) + ((arg.h0) + (arg.h1.h2.h1)), arg.h1.h2.h2) } : { tag: 0, h0: arg.h1.h1 } ) : { tag: 0, h0: "" } )); -const Lib_Types_log = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_not(Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, _$$0, top.h6), 2)), ( _ ) => (Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn(_$$1(0)))))))); +const Lib_Types_log = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_not(Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, _$$0, top.h7), 2)), ( _ ) => (Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn(_$$1(0)))))))); const Prelude_when = ( _$$1, _$$2, _$$3 ) => { switch (_$$2) { case true: return _$$3(0); case false: return Prelude_return(_$$1)(null)(0); } }; const Lib_Types_VU = ( h0 ) => ({ tag: 8, h0: h0 }); const Lib_Types_MkCtx = ( h0, h1, h2, h3, h4 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); -const Lib_Elab_check = ( _$$0, _$$1, _$$2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_forceType(_$$0.h1, _$$2), ( ty$27 ) => { const sc$$4 = Prelude__$2C_(_$$1, ty$27); switch (sc$$4.h2.tag) { case 15: return Lib_Elab_updateRec(_$$0, sc$$4.h2.h0, sc$$4.h2.h1, sc$$4.h2.h2, sc$$4.h3); case 13: return Lib_Elab_checkWhere(_$$0, Lib_Elab_collectDecl(sc$$4.h2.h1), sc$$4.h2.h2, sc$$4.h3); case 12: { const tm$27 = Lib_Syntax_RCase(sc$$4.h2.h0, sc$$4.h2.h1, Prelude_Nothing(), Prelude__$3A$3A_(Lib_Syntax_MkAlt(Lib_Syntax_RVar(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2.h2), "True"), Prelude_Just(sc$$4.h2.h2)), Prelude__$3A$3A_(Lib_Syntax_MkAlt(Lib_Syntax_RVar(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2.h3), "False"), Prelude_Just(sc$$4.h2.h3)), Prelude_Nil()))); return Lib_Elab_check(_$$0, tm$27, sc$$4.h3); break; } case 11: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(sc$$4.h2.h0, sc$$4.h2.h1), ( stmts$27 ) => (Lib_Elab_check(_$$0, stmts$27, sc$$4.h3))); case 10: return Lib_Elab_freshMeta(_$$0, sc$$4.h2.h0, sc$$4.h3, 1); case 9: return Lib_Elab_freshMeta(_$$0, sc$$4.h2.h0, sc$$4.h3, 0); case 8: return ( (sc$$4.h2.h2.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, sc$$4.h2.h1), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta($$sc.h3), ( scty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("SCTM ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2), $$sc.h2))), Prelude_Lin()))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("SCTY ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(scty))) + (""))), ( _1 ) => { const scnm = Lib_Elab_fresh(_$$0, "sc"); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, sc$$4.h2.h3, ( $$case ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_mkPat(Prelude__$2C_($$case.h0, 1)), ( pat$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_MkClause(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC($$case.h0), Prelude__$3A$3A_(Lib_Types_PC(scnm, pat$27, scty), Prelude_Nil()), Prelude_Nil(), $$case.h1)))))), ( clauses ) => { let ctx$27; const _sc$$22 = Lib_Types_extend(_$$0, scnm, scty); ctx$27 = Lib_Types_MkCtx(_sc$$22.h0, _sc$$22.h1, _sc$$22.h2, _sc$$22.h3, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$1)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildTree(ctx$27, Lib_Elab_MkProb(clauses, sc$$4.h3)), ( tree ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Let(sc$$4.h2.h0, scnm, $$sc.h2, tree)))); }))); }))))))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, sc$$4.h2.h2.h1, Lib_Types_VU(Lib_Common_emptyFC)), ( scty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, scty), ( vscty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, sc$$4.h2.h1, vscty), ( sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(sc, vscty)))))))), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta($$sc.h3), ( scty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("SCTM ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2), $$sc.h2))), Prelude_Lin()))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("SCTY ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(scty))) + (""))), ( _1 ) => { const scnm = Lib_Elab_fresh(_$$0, "sc"); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, sc$$4.h2.h3, ( $$case ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_mkPat(Prelude__$2C_($$case.h0, 1)), ( pat$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_MkClause(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC($$case.h0), Prelude__$3A$3A_(Lib_Types_PC(scnm, pat$27, scty), Prelude_Nil()), Prelude_Nil(), $$case.h1)))))), ( clauses ) => { let ctx$27; const _sc$$22 = Lib_Types_extend(_$$0, scnm, scty); ctx$27 = Lib_Types_MkCtx(_sc$$22.h0, _sc$$22.h1, _sc$$22.h2, _sc$$22.h3, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$1)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildTree(ctx$27, Lib_Elab_MkProb(clauses, sc$$4.h3)), ( tree ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Let(sc$$4.h2.h0, scnm, $$sc.h2, tree)))); }))); }))))))) ); case 6: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, sc$$4.h2.h2, Lib_Types_VU(Lib_Common_emptyFC)), ( ty$271 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, ty$271), ( vty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, sc$$4.h2.h3, vty), ( v$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, v$27), ( vv ) => { const ctx$27 = Lib_Types_define(_$$0, sc$$4.h2.h1, vv, vty); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(ctx$27, sc$$4.h2.h4, sc$$4.h3), ( sc$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Let(sc$$4.h2.h0, sc$$4.h2.h1, v$27, sc$27)))); }))))))); case 1: return ( (sc$$4.h3.tag) == (5) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((((("icits ") + (sc$$4.h2.h1.h1)) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(sc$$4.h2.h1.h2))) + (" ")) + (sc$$4.h3.h1)) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(sc$$4.h3.h2))) + (""))), ( _ ) => { const sc$$23 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(sc$$4.h2.h1.h2, sc$$4.h3.h2); switch (sc$$23) { case true: { const $var = Lib_Types_VVar(sc$$4.h2.h0, Prelude_length$27(_$$0.h1), Prelude_Lin()); const ctx$27 = Lib_Types_extend(_$$0, sc$$4.h2.h1.h1, sc$$4.h3.h4); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_($var, sc$$4.h3.h5.h0), sc$$4.h3.h5.h1), ( bapp ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(ctx$27, sc$$4.h2.h2, bapp), ( tm$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Lam(sc$$4.h2.h0, sc$$4.h2.h1.h1, sc$$4.h2.h1.h2, sc$$4.h3.h3, tm$27)))))); break; } case false: { const sc$$24 = Prelude_not(Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(sc$$4.h3.h2, 1)); switch (sc$$24) { case true: { const $var = Lib_Types_VVar(sc$$4.h2.h0, Prelude_length$27(_$$0.h1), Prelude_Lin()); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_($var, sc$$4.h3.h5.h0), sc$$4.h3.h5.h1), ( ty$271 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_extend(_$$0, sc$$4.h3.h1, sc$$4.h3.h4), sc$$4.h2, ty$271), ( sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Lam(sc$$4.h2.h0, sc$$4.h3.h1, sc$$4.h2.h1.h2, sc$$4.h3.h3, sc)))))); break; } case false: return Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$4.h2.h0, (((("Icity issue checking ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$4.h2))) + (" at ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$4.h3))) + (""))), eta)))); } break; } } }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_prvalCtx(_$$0, sc$$4.h3), ( pty ) => (Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$4.h2.h1.h0, (("Expected pi type, got ") + (pty)) + (""))), eta)))))) ); default: { if ((sc$$4.h3.tag) == (5)) { switch (sc$$4.h3.h2) { case 2: { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("XXX edge case add auto lambda {") + (sc$$4.h3.h1)) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$4.h3.h4))) + ("} to ")) + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$4.h2))) + (" "))), ( _ ) => { const $var = Lib_Types_VVar(sc$$4.h3.h0, Prelude_length$27(_$$0.h1), Prelude_Lin()); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_($var, sc$$4.h3.h5.h0), sc$$4.h3.h5.h1), ( ty$271 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_logM(2, Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_prvalCtx(Lib_Types_extend(_$$0, sc$$4.h3.h1, sc$$4.h3.h4), ty$271), ( pty$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn((("XXX ty' is ") + (pty$27)) + (""))))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_extend(_$$0, sc$$4.h3.h1, sc$$4.h3.h4), sc$$4.h2, ty$271), ( sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Lam(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2), sc$$4.h3.h1, 2, sc$$4.h3.h3, sc)))))))); }); break; } case 0: { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("XXX edge case add implicit lambda {") + (sc$$4.h3.h1)) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$4.h3.h4))) + ("} to ")) + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$4.h2))) + (" "))), ( _ ) => { const $var = Lib_Types_VVar(sc$$4.h3.h0, Prelude_length$27(_$$0.h1), Prelude_Lin()); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_($var, sc$$4.h3.h5.h0), sc$$4.h3.h5.h1), ( ty$271 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_logM(2, Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_prvalCtx(Lib_Types_extend(_$$0, sc$$4.h3.h1, sc$$4.h3.h4), ty$271), ( pty$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn((("XXX ty' is ") + (pty$27)) + (""))))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_extend(_$$0, sc$$4.h3.h1, sc$$4.h3.h4), sc$$4.h2, ty$271), ( sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Lam(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2), sc$$4.h3.h1, 0, sc$$4.h3.h3, sc)))))))); }); break; } default: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, sc$$4.h2), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_insert(_$$0, $$sc.h2, $$sc.h3), ( $$sc1 ) => { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((((("INFER ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$4.h2))) + (" to (")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, names, $$sc1.h2))), Prelude_Lin()))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow($$sc1.h3))) + (") expect ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$4.h3))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2), _$$0, $$sc1.h3, sc$$4.h3), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn($$sc1.h2))))); }))); } } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, sc$$4.h2), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_insert(_$$0, $$sc.h2, $$sc.h3), ( $$sc1 ) => { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((((("INFER ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$4.h2))) + (" to (")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, names, $$sc1.h2))), Prelude_Lin()))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow($$sc1.h3))) + (") expect ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$4.h3))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2), _$$0, $$sc1.h3, sc$$4.h3), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn($$sc1.h2))))); }))); } break; } } })); +const Lib_Elab_check = ( _$$0, _$$1, _$$2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_forceType(_$$0.h1, _$$2), ( ty$27 ) => { const sc$$4 = Prelude__$2C_(_$$1, ty$27); switch (sc$$4.h2.tag) { case 15: return Lib_Elab_updateRec(_$$0, sc$$4.h2.h0, sc$$4.h2.h1, sc$$4.h2.h2, sc$$4.h3); case 13: return Lib_Elab_checkWhere(_$$0, Lib_Elab_collectDecl(sc$$4.h2.h1), sc$$4.h2.h2, sc$$4.h3); case 12: { const tm$27 = Lib_Syntax_RCase(sc$$4.h2.h0, sc$$4.h2.h1, Prelude_Nothing(), Prelude__$3A$3A_(Lib_Syntax_MkAlt(Lib_Syntax_RVar(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2.h2), "True"), Prelude_Just(sc$$4.h2.h2)), Prelude__$3A$3A_(Lib_Syntax_MkAlt(Lib_Syntax_RVar(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2.h3), "False"), Prelude_Just(sc$$4.h2.h3)), Prelude_Nil()))); return Lib_Elab_check(_$$0, tm$27, sc$$4.h3); break; } case 11: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(sc$$4.h2.h1), ( body ) => (Lib_Elab_check(_$$0, body, sc$$4.h3))); case 10: return Lib_Elab_freshMeta(_$$0, sc$$4.h2.h0, sc$$4.h3, 1); case 9: return Lib_Elab_freshMeta(_$$0, sc$$4.h2.h0, sc$$4.h3, 0); case 8: return ( (sc$$4.h2.h2.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, sc$$4.h2.h1), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta($$sc.h3), ( scty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("SCTM ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2), $$sc.h2))), Prelude_Lin()))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("SCTY ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(scty))) + (""))), ( _1 ) => { const scnm = Lib_Elab_fresh(_$$0, "sc"); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, sc$$4.h2.h3, ( $$case ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_mkPat(Prelude__$2C_($$case.h0, 1)), ( pat$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_MkClause(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC($$case.h0), Prelude__$3A$3A_(Lib_Types_PC(scnm, pat$27, scty), Prelude_Nil()), Prelude_Nil(), $$case.h1)))))), ( clauses ) => { let ctx$27; const _sc$$22 = Lib_Types_extend(_$$0, scnm, scty); ctx$27 = Lib_Types_MkCtx(_sc$$22.h0, _sc$$22.h1, _sc$$22.h2, _sc$$22.h3, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$1)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildTree(ctx$27, Lib_Elab_MkProb(clauses, sc$$4.h3)), ( tree ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Let(sc$$4.h2.h0, scnm, $$sc.h2, tree)))); }))); }))))))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, sc$$4.h2.h2.h1, Lib_Types_VU(Lib_Common_emptyFC)), ( scty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, scty), ( vscty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, sc$$4.h2.h1, vscty), ( sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(sc, vscty)))))))), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta($$sc.h3), ( scty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("SCTM ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2), $$sc.h2))), Prelude_Lin()))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("SCTY ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(scty))) + (""))), ( _1 ) => { const scnm = Lib_Elab_fresh(_$$0, "sc"); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, sc$$4.h2.h3, ( $$case ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_mkPat(Prelude__$2C_($$case.h0, 1)), ( pat$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_MkClause(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC($$case.h0), Prelude__$3A$3A_(Lib_Types_PC(scnm, pat$27, scty), Prelude_Nil()), Prelude_Nil(), $$case.h1)))))), ( clauses ) => { let ctx$27; const _sc$$22 = Lib_Types_extend(_$$0, scnm, scty); ctx$27 = Lib_Types_MkCtx(_sc$$22.h0, _sc$$22.h1, _sc$$22.h2, _sc$$22.h3, Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$1)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildTree(ctx$27, Lib_Elab_MkProb(clauses, sc$$4.h3)), ( tree ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Let(sc$$4.h2.h0, scnm, $$sc.h2, tree)))); }))); }))))))) ); case 6: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, sc$$4.h2.h2, Lib_Types_VU(Lib_Common_emptyFC)), ( ty$271 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, ty$271), ( vty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, sc$$4.h2.h3, vty), ( v$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, v$27), ( vv ) => { const ctx$27 = Lib_Types_define(_$$0, sc$$4.h2.h1, vv, vty); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(ctx$27, sc$$4.h2.h4, sc$$4.h3), ( sc$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Let(sc$$4.h2.h0, sc$$4.h2.h1, v$27, sc$27)))); }))))))); case 1: return ( (sc$$4.h3.tag) == (5) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((((("icits ") + (sc$$4.h2.h1.h1)) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(sc$$4.h2.h1.h2))) + (" ")) + (sc$$4.h3.h1)) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(sc$$4.h3.h2))) + (""))), ( _ ) => { const sc$$23 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(sc$$4.h2.h1.h2, sc$$4.h3.h2); switch (sc$$23) { case true: { const $var = Lib_Types_VVar(sc$$4.h2.h0, Prelude_length$27(_$$0.h1), Prelude_Lin()); const ctx$27 = Lib_Types_extend(_$$0, sc$$4.h2.h1.h1, sc$$4.h3.h4); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_($var, sc$$4.h3.h5.h0), sc$$4.h3.h5.h1), ( bapp ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(ctx$27, sc$$4.h2.h2, bapp), ( tm$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Lam(sc$$4.h2.h0, sc$$4.h2.h1.h1, sc$$4.h2.h1.h2, sc$$4.h3.h3, tm$27)))))); break; } case false: { const sc$$24 = Prelude_not(Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(sc$$4.h3.h2, 1)); switch (sc$$24) { case true: { const $var = Lib_Types_VVar(sc$$4.h2.h0, Prelude_length$27(_$$0.h1), Prelude_Lin()); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_($var, sc$$4.h3.h5.h0), sc$$4.h3.h5.h1), ( ty$271 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_extend(_$$0, sc$$4.h3.h1, sc$$4.h3.h4), sc$$4.h2, ty$271), ( sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Lam(sc$$4.h2.h0, sc$$4.h3.h1, sc$$4.h2.h1.h2, sc$$4.h3.h3, sc)))))); break; } case false: return Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$4.h2.h0, (((("Icity issue checking ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$4.h2))) + (" at ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$4.h3))) + (""))), eta)))); } break; } } }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_prvalCtx(_$$0, sc$$4.h3), ( pty ) => (Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$4.h2.h1.h0, (("Expected ") + (pty)) + (", got pi type"))), eta)))))) ); default: { if ((sc$$4.h3.tag) == (5)) { switch (sc$$4.h3.h2) { case 2: { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("XXX edge case add auto lambda {") + (sc$$4.h3.h1)) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$4.h3.h4))) + ("} to ")) + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$4.h2))) + (" "))), ( _ ) => { const $var = Lib_Types_VVar(sc$$4.h3.h0, Prelude_length$27(_$$0.h1), Prelude_Lin()); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_($var, sc$$4.h3.h5.h0), sc$$4.h3.h5.h1), ( ty$271 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_logM(2, Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_prvalCtx(Lib_Types_extend(_$$0, sc$$4.h3.h1, sc$$4.h3.h4), ty$271), ( pty$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn((("XXX ty' is ") + (pty$27)) + (""))))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_extend(_$$0, sc$$4.h3.h1, sc$$4.h3.h4), sc$$4.h2, ty$271), ( sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Lam(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2), sc$$4.h3.h1, 2, sc$$4.h3.h3, sc)))))))); }); break; } case 0: { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("XXX edge case add implicit lambda {") + (sc$$4.h3.h1)) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$4.h3.h4))) + ("} to ")) + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$4.h2))) + (" "))), ( _ ) => { const $var = Lib_Types_VVar(sc$$4.h3.h0, Prelude_length$27(_$$0.h1), Prelude_Lin()); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_($var, sc$$4.h3.h5.h0), sc$$4.h3.h5.h1), ( ty$271 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_logM(2, Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_prvalCtx(Lib_Types_extend(_$$0, sc$$4.h3.h1, sc$$4.h3.h4), ty$271), ( pty$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn((("XXX ty' is ") + (pty$27)) + (""))))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_extend(_$$0, sc$$4.h3.h1, sc$$4.h3.h4), sc$$4.h2, ty$271), ( sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Lam(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2), sc$$4.h3.h1, 0, sc$$4.h3.h3, sc)))))))); }); break; } default: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, sc$$4.h2), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_insert(_$$0, $$sc.h2, $$sc.h3), ( $$sc1 ) => { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((((("INFER ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$4.h2))) + (" to (")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, names, $$sc1.h2))), Prelude_Lin()))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow($$sc1.h3))) + (") expect ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$4.h3))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2), _$$0, $$sc1.h3, sc$$4.h3), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn($$sc1.h2))))); }))); } } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, sc$$4.h2), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_insert(_$$0, $$sc.h2, $$sc.h3), ( $$sc1 ) => { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((((("INFER ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$4.h2))) + (" to (")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, names, $$sc1.h2))), Prelude_Lin()))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow($$sc1.h3))) + (") expect ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$4.h3))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$4.h2), _$$0, $$sc1.h3, sc$$4.h3), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn($$sc1.h2))))); }))); } break; } } })); const Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC = ( _$$0 ) => { switch (_$$0.tag) { case 15: return _$$0.h0; case 14: return _$$0.h0; case 13: return _$$0.h0; case 12: return _$$0.h0; case 11: return _$$0.h0; case 10: return _$$0.h0; case 9: return _$$0.h0; case 8: return _$$0.h0; case 7: return _$$0.h0; case 6: return _$$0.h0; case 5: return _$$0.h0; case 4: return _$$0.h0; case 3: return _$$0.h0; case 2: return _$$0.h0; case 1: return _$$0.h0; case 0: return _$$0.h0; } }; const Lib_Elab_unifyCatch = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_catchError(Lib_Elab_unify(_$$1.h1, false, _$$2, _$$3), ( err ) => { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$1.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("fail ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$2))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$3))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_$$1.h0, _$$2), ( a ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_$$1.h0, _$$3), ( b ) => { const msg = (((((("unification failure: ") + (Lib_Types_errorMsg(err))) + ("\n failed to unify ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, names, a))), Prelude_Lin()))) + ("\n with ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, names, b))), Prelude_Lin()))) + ("\n "); return Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$0, msg)), eta)))); }))))); }), ( res ) => (( (res.h0.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("fail with constraints ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Val, eta))), res.h0))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_$$1.h0, _$$2), ( a ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_$$1.h0, _$$3), ( b ) => { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$1.h2); const msg = (((("unification failure\n failed to unify ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, names, a))), Prelude_Lin()))) + ("\n with ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, names, b))), Prelude_Lin()))) + (""); const msg1 = (msg) + ((("\nconstraints ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Val, eta))), res.h0))) + ("")); return Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$0, msg1)), eta)))); }))))) )))); const Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow = ( _$$0 ) => { switch (_$$0.tag) { case 10: return Lib_Types_Prelude_Show$20Lib_Types_Literal$2Cshow(_$$0.h1); case 9: return "ERASED"; case 8: return "U"; case 7: return (((((((("(%letrec ") + (_$$0.h1)) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h2))) + (" = ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h3))) + (" in ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h4))) + (""); case 6: return (((((("(%let ") + (_$$0.h1)) + (" = ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h2))) + (" in ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h3))) + (""); case 5: switch (_$$0.h2) { case 2: return (((((((("(%pi {{") + (Lib_Types_Prelude_Show$20Lib_Types_Quant$2Cshow(_$$0.h3))) + (" ")) + (_$$0.h1)) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h4))) + ("}}. ")) + (Lib_Types_showClosure(_$$0.h5))) + (")"); case 1: return (((((((("(%pi (") + (Lib_Types_Prelude_Show$20Lib_Types_Quant$2Cshow(_$$0.h3))) + (" ")) + (_$$0.h1)) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h4))) + ("). ")) + (Lib_Types_showClosure(_$$0.h5))) + (")"); case 0: return (((((((("(%pi {") + (Lib_Types_Prelude_Show$20Lib_Types_Quant$2Cshow(_$$0.h3))) + (" ")) + (_$$0.h1)) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h4))) + ("}. ")) + (Lib_Types_showClosure(_$$0.h5))) + (")"); } break; case 4: return (((((("(%lam ") + (Lib_Types_Prelude_Show$20Lib_Types_Quant$2Cshow(_$$0.h3))) + ("")) + (_$$0.h1)) + (" ")) + (Lib_Types_showClosure(_$$0.h4))) + (")"); case 3: return (((("(%meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0.h1))) + (" [")) + (Prelude_showInt(Prelude_natToInt(Data_SnocList_snoclen(_$$0.h2))))) + (" sp])"); case 2: return (((("(%case ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h1))) + (" ")) + (Prelude_joinBy(" ", Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow_showAlt(_$$0, _$$0.h0, _$$0.h1, _$$0.h2, eta)), _$$0.h2)))) + (")"); case 1: return ( (_$$0.h2.tag) == (0) ? Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0.h1) : (((("(") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0.h1))) + (" ")) + (Prelude_joinBy(" ", Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(eta)), Prelude__$3C$3E$3E_(_$$0.h2, Prelude_Nil()))))) + (")") ); case 0: return ( (_$$0.h2.tag) == (0) ? (("%var") + (Prelude_showInt(_$$0.h1))) + ("") : (((("(%var") + (Prelude_showInt(_$$0.h1))) + (" ")) + (Prelude_joinBy(" ", Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(eta)), Prelude__$3C$3E$3E_(_$$0.h2, Prelude_Nil()))))) + (")") ); } }; @@ -218,7 +220,7 @@ const Lib_Types_VVar = ( h0, h1, h2 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2 }) const Lib_Eval_eval = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case 11: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VErased(_$$1.h0)); case 10: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VLit(_$$1.h0, _$$1.h1)); case 9: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0, _$$1.h2), ( ty$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(Lib_Types_VVar(_$$1.h0, Prelude_length$27(_$$0), Prelude_Lin()), _$$0), _$$1.h3), ( t$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(Lib_Types_VVar(_$$1.h0, Prelude_length$27(_$$0), Prelude_Lin()), _$$0), _$$1.h4), ( u$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VLetRec(_$$1.h0, _$$1.h1, ty$27, t$27, u$27)))))))); case 8: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0, _$$1.h2), ( t$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(Lib_Types_VVar(_$$1.h0, Prelude_length$27(_$$0), Prelude_Lin()), _$$0), _$$1.h3), ( u$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VLet(_$$1.h0, _$$1.h1, t$27, u$27)))))); case 7: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0, _$$1.h1), ( sc$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_unlet(_$$0, sc$27), ( sc$271 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_forceType(_$$0, sc$271), ( sc$272 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_evalCase(_$$0, sc$272, _$$1.h2), ( $$sc ) => (( ($$sc.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0, _$$1.h1), ( vsc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Eval_evalAlt(_$$0, eta)), _$$1.h2), ( alts$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VCase(_$$1.h0, vsc, alts$27)))))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn($$sc.h1) ))))))))); case 6: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0, _$$1.h4), ( a$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VPi(_$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, a$27, Lib_Types_MkClosure(_$$0, _$$1.h5))))); case 5: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VU(_$$1.h0)); case 4: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0, _$$1.h1), ( t$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0, _$$1.h2), ( u$27 ) => (Lib_Eval_vapp(t$27, u$27))))); case 3: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VLam(_$$1.h0, _$$1.h1, _$$1.h2, _$$1.h3, Lib_Types_MkClosure(_$$0, _$$1.h4))); case 2: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_lookupMeta(_$$1.h1), ( meta ) => (( (meta.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(meta.h2) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VMeta(_$$1.h0, _$$1.h1, Prelude_Lin())) ))); case 1: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VRef(_$$1.h0, _$$1.h1, Prelude_Lin())); case 0: { const sc$$4 = Prelude_getAt(Prelude_intToNat(_$$1.h1), _$$0); return ( (sc$$4.tag) == (1) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, (("Bad deBruin index ") + (Prelude_showInt(_$$1.h1))) + (""))), eta)))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(sc$$4.h1) ); break; } } }; const Lib_Types_VRef = ( h0, h1, h2 ) => ({ tag: 1, h0: h0, h1: h1, h2: h2 }); const Lib_Types_VMeta = ( h0, h1, h2 ) => ({ tag: 3, h0: h0, h1: h1, h2: h2 }); -const Lib_Types_lookupMeta = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$4 = Data_SortedMap_lookupMap$27(_$$0, top.h5.h0); if ((sc$$4.tag) == (1)) { const sc$$6 = Data_SortedMap_lookupMap$27(_$$0.h0, top.h0); if ((sc$$6.tag) == (1)) { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("missing module: ") + (_$$0.h0)) + (""))), eta)))); } else { const sc$$9 = Data_SortedMap_lookupMap$27(_$$0, sc$$6.h1.h2.h0); return ( (sc$$9.tag) == (1) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("missing meta: ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (""))), eta)))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(sc$$9.h1) ); } } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(sc$$4.h1); } })); +const Lib_Types_lookupMeta = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$4 = Data_SortedMap_lookupMap$27(_$$0, top.h6.h0); if ((sc$$4.tag) == (1)) { const sc$$6 = Data_SortedMap_lookupMap$27(_$$0.h0, top.h0); if ((sc$$6.tag) == (1)) { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (((("missing module: ") + (_$$0.h0)) + (" looking up meta ")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (""))), eta)))); } else { const sc$$9 = Data_SortedMap_lookupMap$27(_$$0, sc$$6.h1.h2.h0); return ( (sc$$9.tag) == (1) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("missing meta: ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (""))), eta)))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(sc$$9.h1) ); } } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(sc$$4.h1); } })); const Lib_Types_MkClosure = ( h0, h1 ) => ({ tag: 0, h0: h0, h1: h1 }); const Lib_Types_VLam = ( h0, h1, h2, h3, h4 ) => ({ tag: 4, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); const Lib_Eval_vapp = ( _$$0, _$$1 ) => { switch (_$$0.tag) { case 4: return Lib_Eval_eval(Prelude__$3A$3A_(_$$1, _$$0.h4.h0), _$$0.h4.h1); case 3: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VMeta(_$$0.h0, _$$0.h1, Prelude__$3A$3C_(_$$0.h2, _$$1))); case 1: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VRef(_$$0.h0, _$$0.h1, Prelude__$3A$3C_(_$$0.h2, _$$1))); case 0: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VVar(_$$0.h0, _$$0.h1, Prelude__$3A$3C_(_$$0.h2, _$$1))); default: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (((("impossible in vapp ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0))) + (" to ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$1))) + ("\n"))), eta)))); } }; @@ -231,7 +233,7 @@ const Lib_Types_VCaseLit = ( h0, h1 ) => ({ tag: 1, h0: h0, h1: h1 }); const Lib_Eval_evalCase = ( _$$0, _$$1, _$$2 ) => { if ((_$$2.tag) == (1)) { switch (_$$2.h1.tag) { case 1: switch (_$$1.tag) { case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$14 = Lib_Common_Prelude_Eq$20Lib_Common_QName$2C_$3D$3D_(_$$1.h1, _$$2.h1.h0); switch (sc$$14) { case true: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((((("ECase ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1.h1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$1.h2, Prelude_Nil())))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, _$$2.h1.h1))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Tm$2Cshow(_$$2.h1.h2))) + (""))), ( _ ) => (Lib_Eval_evalCase_pushArgs(_$$0, _$$1, _$$2, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h1.h0, _$$2.h1.h1, _$$2.h1.h2, _$$1.h0, _$$1.h1, _$$1.h2, _$$0, Prelude__$3C$3E$3E_(_$$1.h2, Prelude_Nil()), _$$2.h1.h1))); case false: { const sc$$15 = Lib_TopContext_lookup(_$$1.h1, top); return ( (sc$$15.tag) == (0) ? ( (sc$$15.h1.h3.tag) == (2) ? Lib_Eval_evalCase(_$$0, _$$1, _$$2.h2) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()) ) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()) ); break; } } }); case 0: { const sc$$12 = Lib_Eval_lookupVar(_$$0, _$$1.h1); return ( (sc$$12.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("lookup ") + (Prelude_showInt(_$$1.h1))) + (" is Nothing in env ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, _$$0))) + (""))), ( _ ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()))) : ( (sc$$12.h1.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("lookup ") + (Prelude_showInt(_$$1.h1))) + (" is ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$12.h1))) + (""))), ( _ ) => { const sc$$19 = (sc$$12.h1.h1) == (_$$1.h1); switch (sc$$19) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()); case false: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(Lib_Types_VVar(sc$$12.h1.h0, sc$$12.h1.h1, sc$$12.h1.h2), _$$1.h2), ( val ) => (Lib_Eval_evalCase(_$$0, val, _$$2))); } }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(sc$$12.h1, _$$1.h2), ( val ) => (Lib_Eval_evalCase(_$$0, val, _$$2))) ) ); break; } default: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("CASE BAIL sc ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$1))) + (" vs "))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("env is ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, _$$0))) + (""))), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()))))); } break; case 0: { if ((_$$1.tag) == (0)) { const sc$$10 = Lib_Eval_lookupVar(_$$0, _$$1.h1); return ( (sc$$10.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("lookup ") + (Prelude_showInt(_$$1.h1))) + (" is Nothing in env ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, _$$0))) + (""))), ( _ ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()))) : ( (sc$$10.h1.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("lookup ") + (Prelude_showInt(_$$1.h1))) + (" is ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$10.h1))) + (""))), ( _ ) => { const sc$$17 = (sc$$10.h1.h1) == (_$$1.h1); switch (sc$$17) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()); case false: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(Lib_Types_VVar(sc$$10.h1.h0, sc$$10.h1.h1, sc$$10.h1.h2), _$$1.h2), ( val ) => (Lib_Eval_evalCase(_$$0, val, _$$2))); } }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(sc$$10.h1, _$$1.h2), ( val ) => (Lib_Eval_evalCase(_$$0, val, _$$2))) ) ); } else { return Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Prelude_Just(eta)), Lib_Eval_eval(_$$0, _$$2.h1.h0)); } break; } default: { if ((_$$1.tag) == (0)) { const sc$$9 = Lib_Eval_lookupVar(_$$0, _$$1.h1); return ( (sc$$9.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("lookup ") + (Prelude_showInt(_$$1.h1))) + (" is Nothing in env ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, _$$0))) + (""))), ( _ ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()))) : ( (sc$$9.h1.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("lookup ") + (Prelude_showInt(_$$1.h1))) + (" is ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$9.h1))) + (""))), ( _ ) => { const sc$$16 = (sc$$9.h1.h1) == (_$$1.h1); switch (sc$$16) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()); case false: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(Lib_Types_VVar(sc$$9.h1.h0, sc$$9.h1.h1, sc$$9.h1.h2), _$$1.h2), ( val ) => (Lib_Eval_evalCase(_$$0, val, _$$2))); } }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(sc$$9.h1, _$$1.h2), ( val ) => (Lib_Eval_evalCase(_$$0, val, _$$2))) ) ); } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("CASE BAIL sc ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$1))) + (" vs "))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("env is ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, _$$0))) + (""))), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()))))); } break; } } } else { if ((_$$1.tag) == (0)) { const sc$$6 = Lib_Eval_lookupVar(_$$0, _$$1.h1); return ( (sc$$6.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("lookup ") + (Prelude_showInt(_$$1.h1))) + (" is Nothing in env ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, _$$0))) + (""))), ( _ ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()))) : ( (sc$$6.h1.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("lookup ") + (Prelude_showInt(_$$1.h1))) + (" is ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$6.h1))) + (""))), ( _ ) => { const sc$$13 = (sc$$6.h1.h1) == (_$$1.h1); switch (sc$$13) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()); case false: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(Lib_Types_VVar(sc$$6.h1.h0, sc$$6.h1.h1, sc$$6.h1.h2), _$$1.h2), ( val ) => (Lib_Eval_evalCase(_$$0, val, _$$2))); } }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(sc$$6.h1, _$$1.h2), ( val ) => (Lib_Eval_evalCase(_$$0, val, _$$2))) ) ); } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("CASE BAIL sc ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$1))) + (" vs "))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("env is ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, _$$0))) + (""))), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()))))); } } }; const Lib_Eval_vappSpine = ( _$$0, _$$1 ) => (( (_$$1.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(_$$0, _$$1.h1), ( rest ) => (Lib_Eval_vapp(rest, _$$1.h2))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(_$$0) )); const Lib_Eval_lookupVar = ( _$$0, _$$1 ) => { const l = Prelude_natToInt(Prelude_length(_$$0)); const sc$$3 = Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, _$$1, l), 2); switch (sc$$3) { case true: return Prelude_Nothing(); case false: { const sc$$4 = Prelude_getAt(Prelude_intToNat(((l) - (_$$1)) - (1)), _$$0); if ((sc$$4.tag) == (1)) { return Prelude_Nothing(); } else { if ((sc$$4.h1.tag) == (0)) { const sc$$10 = (_$$1) == (sc$$4.h1.h1); switch (sc$$10) { case true: return Prelude_Nothing(); case false: return Prelude_Just(sc$$4.h1); } } else { return Prelude_Just(sc$$4.h1); } } break; } } }; -const Lib_TopContext_lookup = ( _$$0, _$$1 ) => { const sc$$4 = Data_SortedMap_lookupMap$27(_$$0, _$$1.h4); if ((sc$$4.tag) == (1)) { const sc$$6 = Data_SortedMap_lookupMap$27(_$$0.h0, _$$1.h0); return ( (sc$$6.tag) == (1) ? Prelude_Nothing() : Data_SortedMap_lookupMap$27(_$$0, sc$$6.h1.h1) ); } else { return Prelude_Just(sc$$4.h1); } }; +const Lib_TopContext_lookup = ( _$$0, _$$1 ) => { const sc$$4 = (_$$0.h0) == (_$$1.h4); switch (sc$$4) { case true: return Data_SortedMap_lookupMap$27(_$$0, _$$1.h5); case false: { const sc$$5 = Data_SortedMap_lookupMap$27(_$$0.h0, _$$1.h0); return ( (sc$$5.tag) == (1) ? Prelude_Nothing() : Data_SortedMap_lookupMap$27(_$$0, sc$$5.h1.h1) ); break; } } }; const Lib_Eval_evalCase_pushArgs = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _$$13, _$$14, _$$15 ) => (bouncer(Lib_Eval_REC_evalCase_pushArgs, { tag: 1, h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: _5, h6: _6, h7: _7, h8: _8, h9: _9, h10: _10, h11: _11, h12: null, h13: _$$13, h14: _$$14, h15: _$$15 })); const Lib_Eval_REC_evalCase_pushArgs = ( arg ) => (( (arg.h15.tag) == (1) ? ( (arg.h14.tag) == (1) ? { tag: 1, 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: Prelude__$3A$3A_(arg.h14.h1, arg.h13), h14: arg.h14.h2, h15: arg.h15.h2 } : { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()) } ) : { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(arg.h13, arg.h8), ( t$27 ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Prelude_Just(eta)), Lib_Eval_vappSpine(t$27, Prelude__$3C$3E$3C_(Prelude_Lin(), arg.h14))))) } )); const Prelude__$3C$3E$3C_ = ( _$$1, _$$2 ) => (bouncer(Prelude_REC__$3C$3E$3C_, { tag: 1, h0: null, h1: _$$1, h2: _$$2 })); @@ -266,11 +268,11 @@ const Lib_Elab_MkResult = ( h0 ) => ({ tag: 0, h0: h0 }); const Lib_Elab_Prelude_Monoid$20Lib_Elab_UnifyResult$2Cneutral = Lib_Elab_MkResult(Prelude_Nil()); const Lib_Types_Prelude_Eq$20Lib_Types_Literal$2C_$3D$3D_ = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case 2: return ( (_$$0.tag) == (2) ? (_$$0.h0) == (_$$1.h0) : false ); case 1: return ( (_$$0.tag) == (1) ? (_$$0.h0) == (_$$1.h0) : false ); case 0: return ( (_$$0.tag) == (0) ? (_$$0.h0) == (_$$1.h0) : false ); default: return false; } }; const Lib_Elab_unifySpine = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => { switch (_$$2) { case true: return ( (_$$3.tag) == (1) ? ( (_$$4.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2C_$3C$2A$3E_(Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (( eta1 ) => (Lib_Elab_Prelude_Semigroup$20Lib_Elab_UnifyResult$2C_$3C$2B$3E_(eta, eta1))), Lib_Elab_unify(_$$0, _$$1, _$$3.h2, _$$4.h2)), Lib_Elab_unifySpine(_$$0, _$$1, true, _$$3.h1, _$$4.h1)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, "meta spine length mismatch")), eta)))) ) : ( (_$$4.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Elab_MkResult(Prelude_Nil())) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, "meta spine length mismatch")), eta)))) ) ); case false: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, "unify failed at head")), eta)))); } }; -const Lib_Elab_solve = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_lookupMeta(_$$1), ( $$sc ) => (( ($$sc.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((((((("SOLVE ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_MetaKind$2Cshow($$sc.h4))) + (" lvl ")) + (Prelude_showInt(Prelude_length$27(_$$0)))) + (" sp ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$2, Prelude_Nil())))) + (" is ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$3))) + (""))), ( _ ) => { const size = Prelude_length(Prelude_filter(( x ) => (Lib_Types_Prelude_Eq$20Lib_Types_BD$2C_$3D$3D_(x, false)), $$sc.h2.h3)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((((((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" size is ")) + (Prelude_showInt(Prelude_natToInt(size)))) + (" sps ")) + (Prelude_showInt(Prelude_natToInt(Data_SnocList_snoclen(_$$2))))) + (""))), ( _1 ) => { const sc$$15 = Prelude_Prelude_Eq$20Prelude_Nat$2C_$3D$3D_(Data_SnocList_snoclen(_$$2), size); switch (sc$$15) { case true: { const l = Prelude_length$27(_$$0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((("meta ") + (Lib_Types_Prelude_Show$20Lib_Types_MetaEntry$2Cshow($$sc))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_tryError(Lib_Elab_invert(l, _$$2)), ( $$sc1 ) => (( ($$sc1.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(l, _$$3), ( hack ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0, hack), ( t ) => (Lib_Types_catchError(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_rename(_$$1, $$sc1.h2, l, t), ( tm ) => { const tm1 = Lib_Elab_lams(Data_SnocList_snoclen(_$$2), Prelude_reverse()(Lib_Elab__boundNames($$sc.h2)), tm); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), tm1), ( soln ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_updateMeta(_$$1, ( $$case ) => { switch ($$case.tag) { case 2: return Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("Meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (" out of scope"))), eta)))); case 1: return Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E($$case.h0, (("Meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (" already solved! [solve2]"))), eta)))); case 0: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Solved($$case.h0, $$case.h1, soln)); } }), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_maybeCheck(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for_(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, $$sc.h5, ( $$case ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(soln, $$case.h2), ( val ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _4 ) => ((((((("discharge l=") + (Prelude_showInt(Prelude_length$27($$case.h1)))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(val))) + (" =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow($$case.h3))) + (""))), ( _4 ) => (Lib_Elab_unify($$case.h1, false, val, $$case.h3))))))), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top1 ) => { switch (top1.h5.h3) { case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((((("check autos depending on ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (" ")) + (Prelude_debugStr(null, top1.h5.h3))) + (""))), ( _5 ) => (Lib_Elab_checkAutos($$sc.h1, top1.h5.h1))); default: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } })))), ( _4 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0))))))))); }), ( $$case ) => (( ($$case.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _3 ) => ((((((("CONSTRAINT2 ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$case.h1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$2, Prelude_Nil())))) + (" =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(t))) + (""))), ( _3 ) => (Lib_Elab_addConstraint(_$$0, _$$1, _$$2, t))) : Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_Lib_Common_HasFC$20Lib_Common_Error$2CgetFC($$case), (((((((("") + (Lib_Types_errorMsg($$case))) + (" for ")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$2, Prelude_Nil())))) + (" =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(t))) + (""))), eta)))) ))))))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _3 ) => ((("postpone constraint ") + (Lib_Common_showError("", $$sc1.h2))) + (""))), ( _3 ) => (Lib_Elab_addConstraint(_$$0, _$$1, _$$2, _$$3))) ))))); break; } default: { const l = Prelude_length$27(_$$0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((((((("meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" (")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (") applied to ")) + (Prelude_showInt(Prelude_natToInt(Data_SnocList_snoclen(_$$2))))) + (" args instead of ")) + (Prelude_showInt(Prelude_natToInt(size)))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _3 ) => ((((((("CONSTRAINT ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$2, Prelude_Nil())))) + (" =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$3))) + (""))), ( _3 ) => (Lib_Elab_addConstraint(_$$0, _$$1, _$$2, _$$3))))); break; } } }); }) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_getValFC(_$$3), (("Meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" already solved! [solve]"))), eta)))) )))); -const Lib_Elab_addConstraint = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { switch (top.h5.h3) { case 0: return Lib_Elab_updateMeta(_$$1, ( $$case ) => { switch ($$case.tag) { case 2: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("Meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" out of scope"))), eta)))); case 1: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E($$case.h0, (("Meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$case.h1))) + (" already solved [addConstraint]"))), eta)))); case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("Add constraint ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$2, Prelude_Nil())))) + (" =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$3))) + (""))), ( _ ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Unsolved($$case.h0, $$case.h1, $$case.h2, $$case.h3, $$case.h4, Prelude__$3A$3A_(Lib_Types_MkMc(Lib_Types_getValFC(_$$3), _$$0, _$$2, _$$3), $$case.h5))))); } }); default: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } })); +const Lib_Elab_solve = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_lookupMeta(_$$1), ( $$sc ) => (( ($$sc.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((((((("SOLVE ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_MetaKind$2Cshow($$sc.h4))) + (" lvl ")) + (Prelude_showInt(Prelude_length$27(_$$0)))) + (" sp ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$2, Prelude_Nil())))) + (" is ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$3))) + (""))), ( _ ) => { const size = Prelude_length(Prelude_filter(( x ) => (Lib_Types_Prelude_Eq$20Lib_Types_BD$2C_$3D$3D_(x, false)), $$sc.h2.h3)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((((((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" size is ")) + (Prelude_showInt(Prelude_natToInt(size)))) + (" sps ")) + (Prelude_showInt(Prelude_natToInt(Data_SnocList_snoclen(_$$2))))) + (""))), ( _1 ) => { const sc$$15 = Prelude_Prelude_Eq$20Prelude_Nat$2C_$3D$3D_(Data_SnocList_snoclen(_$$2), size); switch (sc$$15) { case true: { const l = Prelude_length$27(_$$0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((("meta ") + (Lib_Types_Prelude_Show$20Lib_Types_MetaEntry$2Cshow($$sc))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_tryError(Lib_Elab_invert(l, _$$2)), ( $$sc1 ) => (( ($$sc1.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(l, _$$3), ( hack ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0, hack), ( t ) => (Lib_Types_catchError(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_rename(_$$1, $$sc1.h2, l, t), ( tm ) => { const tm1 = Lib_Elab_lams(Data_SnocList_snoclen(_$$2), Prelude_reverse()(Lib_Elab__boundNames($$sc.h2)), tm); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), tm1), ( soln ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_updateMeta(_$$1, ( $$case ) => { switch ($$case.tag) { case 2: return Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("Meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (" out of scope"))), eta)))); case 1: return Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E($$case.h0, (("Meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (" already solved! [solve2]"))), eta)))); case 0: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Solved($$case.h0, $$case.h1, soln)); } }), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_maybeCheck(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for_(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, $$sc.h5, ( $$case ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(soln, $$case.h2), ( val ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _4 ) => ((((((("discharge l=") + (Prelude_showInt(Prelude_length$27($$case.h1)))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(val))) + (" =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow($$case.h3))) + (""))), ( _4 ) => (Lib_Elab_unify($$case.h1, false, val, $$case.h3))))))), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top1 ) => { switch (top1.h6.h3) { case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((((("check autos depending on ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (" ")) + (Prelude_debugStr(null, top1.h6.h3))) + (""))), ( _5 ) => (Lib_Elab_checkAutos($$sc.h1, top1.h6.h1))); default: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } })))), ( _4 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0))))))))); }), ( $$case ) => (( ($$case.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _3 ) => ((((((("CONSTRAINT2 ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$case.h1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$2, Prelude_Nil())))) + (" =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(t))) + (""))), ( _3 ) => (Lib_Elab_addConstraint(_$$0, _$$1, _$$2, t))) : Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_Lib_Common_HasFC$20Lib_Common_Error$2CgetFC($$case), (((((((("") + (Lib_Types_errorMsg($$case))) + (" for ")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$2, Prelude_Nil())))) + (" =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(t))) + (""))), eta)))) ))))))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _3 ) => ((("postpone constraint ") + (Lib_Common_showError("", $$sc1.h2))) + (""))), ( _3 ) => (Lib_Elab_addConstraint(_$$0, _$$1, _$$2, _$$3))) ))))); break; } default: { const l = Prelude_length$27(_$$0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((((((("meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" (")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (") applied to ")) + (Prelude_showInt(Prelude_natToInt(Data_SnocList_snoclen(_$$2))))) + (" args instead of ")) + (Prelude_showInt(Prelude_natToInt(size)))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _3 ) => ((((((("CONSTRAINT ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$sc.h1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$2, Prelude_Nil())))) + (" =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$3))) + (""))), ( _3 ) => (Lib_Elab_addConstraint(_$$0, _$$1, _$$2, _$$3))))); break; } } }); }) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_getValFC(_$$3), (("Meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" already solved! [solve]"))), eta)))) )))); +const Lib_Elab_addConstraint = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { switch (top.h6.h3) { case 0: return Lib_Elab_updateMeta(_$$1, ( $$case ) => { switch ($$case.tag) { case 2: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("Meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" out of scope"))), eta)))); case 1: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E($$case.h0, (("Meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$case.h1))) + (" already solved [addConstraint]"))), eta)))); case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("Add constraint ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(_$$2, Prelude_Nil())))) + (" =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$3))) + (""))), ( _ ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Unsolved($$case.h0, $$case.h1, $$case.h2, $$case.h3, $$case.h4, Prelude__$3A$3A_(Lib_Types_MkMc(Lib_Types_getValFC(_$$3), _$$0, _$$2, _$$3), $$case.h5))))); } }); default: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } })); const Lib_Types_MkMc = ( h0, h1, h2, h3 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3 }); const Lib_Types_Unsolved = ( h0, h1, h2, h3, h4, h5 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4, h5: h5 }); -const Lib_Elab_updateMeta = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$4 = Data_SortedMap_lookupMap$27(_$$0, top.h5.h0); return ( (sc$$4.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(_$$1(sc$$4.h1), ( me ) => { const autos = ( (me.tag) == (1) ? Prelude_filter(( _$$3 ) => (Prelude_not(Lib_Common_Prelude_Eq$20Lib_Common_QName$2C_$3D$3D_(_$$0, _$$3))), top.h5.h1) : top.h5.h1 ); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, Lib_Types_MC(Data_SortedMap_updateMap(_$$0, me, top.h5.h0), autos, top.h5.h2, top.h5.h3), tc.h6, tc.h7, tc.h8)))); }) ); })); +const Lib_Elab_updateMeta = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$4 = Data_SortedMap_lookupMap$27(_$$0, top.h6.h0); return ( (sc$$4.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(_$$1(sc$$4.h1), ( me ) => { const autos = ( (me.tag) == (1) ? Prelude_filter(( _$$3 ) => (Prelude_not(Lib_Common_Prelude_Eq$20Lib_Common_QName$2C_$3D$3D_(_$$0, _$$3))), top.h6.h1) : top.h6.h1 ); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, Lib_Types_MC(Data_SortedMap_updateMap(_$$0, me, top.h6.h0), autos, top.h6.h2, top.h6.h3), tc.h7, tc.h8, tc.h9)))); }) ); })); const Prelude_filter = ( _$$1, _$$2 ) => (Prelude_filter_go(_$$1, _$$2, _$$2, Prelude_Lin())); const Prelude_filter_go = ( _, _1, _$$4, _$$5 ) => (bouncer(Prelude_REC_filter_go, { tag: 1, h0: null, h1: _, h2: _1, h3: null, h4: _$$4, h5: _$$5 })); const Prelude_REC_filter_go = ( arg ) => { if ((arg.h4.tag) == (1)) { const sc$$9 = arg.h1(arg.h4.h1); switch (sc$$9) { case true: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4.h2, h5: Prelude__$3A$3C_(arg.h5, arg.h4.h1) }; case false: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4.h2, h5: arg.h5 }; } } else { return { tag: 0, h0: Prelude__$3C$3E$3E_(arg.h5, Prelude_Nil()) }; } }; @@ -281,8 +283,8 @@ const Lib_Elab_makeSpine = ( _$$0, _$$1 ) => (bouncer(Lib_Elab_REC_makeSpine, { const Lib_Elab_REC_makeSpine = ( arg ) => { if ((arg.h1.tag) == (1)) { switch (arg.h1.h1) { case true: return { tag: 1, h0: (arg.h0) - (1), h1: arg.h1.h2 }; case false: return { tag: 0, h0: Prelude__$3A$3C_(Lib_Elab_makeSpine((arg.h0) - (1), arg.h1.h2), Lib_Types_VVar(Lib_Common_emptyFC, (arg.h0) - (1), Prelude_Lin())) }; } } else { return { tag: 0, h0: Prelude_Lin() }; } }; const Lib_Syntax_RVar = ( h0, h1 ) => ({ tag: 0, h0: h0, h1: h1 }); const Lib_Elab_findMatches = ( _$$0, _$$1, _$$2 ) => (bouncer(Lib_Elab_REC_findMatches, { tag: 1, h0: _$$0, h1: _$$1, h2: _$$2 })); -const Lib_Elab_REC_findMatches = ( arg ) => { if ((arg.h2.tag) == (1)) { const sc$$10 = Lib_Elab_isCandidate(arg.h1, arg.h2.h1.h3); switch (sc$$10) { case true: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const fc = Lib_Types_getValFC(arg.h1); return Lib_Types_catchError(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("TRY ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(arg.h2.h1.h2))) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), arg.h2.h1.h3))), Prelude_Lin()))) + (" for ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h1))) + (""))), ( _ ) => { const sc$$18 = Lib_Util_splitTele(arg.h2.h1.h3); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_setMetaMode(1), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(arg.h0, Lib_Syntax_RVar(fc, arg.h2.h1.h2.h1), arg.h1), ( tm ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((("Found ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), tm))), Prelude_Lin()))) + (" for ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h1))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, top.h5, tc.h6, tc.h7, tc.h8)))), ( _3 ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Prelude__$3A$3A_(arg.h2.h1.h2, eta)), Lib_Elab_findMatches(arg.h0, arg.h1, arg.h2.h2)))))))))); }), ( err ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("No match ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h1))) + (" ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), arg.h2.h1.h3))), Prelude_Lin()))) + (" ")) + (Lib_Common_showError("", err))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, top.h5, tc.h6, tc.h7, tc.h8)))), ( _1 ) => (Lib_Elab_findMatches(arg.h0, arg.h1, arg.h2.h2))))))); }) }; case false: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2.h2 }; } } else { return { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nil()) }; } }; -const Lib_Elab_setMetaMode = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, Lib_Types_MC(tc.h5.h0, tc.h5.h1, tc.h5.h2, _$$0), tc.h6, tc.h7, tc.h8))))); +const Lib_Elab_REC_findMatches = ( arg ) => { if ((arg.h2.tag) == (1)) { const sc$$10 = Lib_Elab_isCandidate(arg.h1, arg.h2.h1.h3); switch (sc$$10) { case true: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const fc = Lib_Types_getValFC(arg.h1); return Lib_Types_catchError(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("TRY ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(arg.h2.h1.h2))) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), arg.h2.h1.h3))), Prelude_Lin()))) + (" for ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h1))) + (""))), ( _ ) => { const sc$$18 = Lib_Util_splitTele(arg.h2.h1.h3); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_setMetaMode(1), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(arg.h0, Lib_Syntax_RVar(fc, arg.h2.h1.h2.h1), arg.h1), ( tm ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((("Found ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), tm))), Prelude_Lin()))) + (" for ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h1))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, top.h6, tc.h7, tc.h8, tc.h9)))), ( _3 ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Prelude__$3A$3A_(arg.h2.h1.h2, eta)), Lib_Elab_findMatches(arg.h0, arg.h1, arg.h2.h2)))))))))); }), ( err ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("No match ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h1))) + (" ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), arg.h2.h1.h3))), Prelude_Lin()))) + (" ")) + (Lib_Common_showError("", err))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, top.h6, tc.h7, tc.h8, tc.h9)))), ( _1 ) => (Lib_Elab_findMatches(arg.h0, arg.h1, arg.h2.h2))))))); }) }; case false: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2.h2 }; } } else { return { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nil()) }; } }; +const Lib_Elab_setMetaMode = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, Lib_Types_MC(tc.h6.h0, tc.h6.h1, tc.h6.h2, _$$0), tc.h7, tc.h8, tc.h9))))); const Lib_Util_splitTele_go = ( _$$1, _$$2 ) => (bouncer(Lib_Util_REC_splitTele_go, { tag: 1, h0: null, h1: _$$1, h2: _$$2 })); const Lib_Util_splitTele = ( eta ) => (Lib_Util_splitTele_go(Prelude_Nil(), eta)); const Lib_Util_REC_splitTele_go = ( arg ) => (( (arg.h2.tag) == (6) ? { tag: 1, h0: arg.h0, h1: Prelude__$3A$3A_(Lib_Util_MkBinder(arg.h2.h0, arg.h2.h1, arg.h2.h2, arg.h2.h3, arg.h2.h4), arg.h1), h2: arg.h2.h5 } : { tag: 0, h0: Prelude__$2C_(arg.h2, Prelude_reverse()(arg.h1)) } )); @@ -291,7 +293,7 @@ const Lib_Elab_isCandidate = ( _$$0, _$$1 ) => (bouncer(Lib_Elab_REC_isCandidate const Lib_Elab_REC_isCandidate = ( arg ) => { switch (arg.h1.tag) { case 6: switch (arg.h1.h2) { case 1: return { tag: 0, h0: false }; default: return { tag: 1, h0: arg.h0, h1: arg.h1.h5 }; } break; case 4: return { tag: 1, h0: arg.h0, h1: arg.h1.h1 }; case 1: return ( (arg.h0.tag) == (1) ? { tag: 0, h0: Lib_Common_Prelude_Eq$20Lib_Common_QName$2C_$3D$3D_(arg.h0.h1, arg.h1.h1) } : { tag: 0, h0: false } ); default: return { tag: 0, h0: false }; } }; const Lib_Elab_contextMatches = ( _$$0, _$$1 ) => (Lib_Elab_contextMatches_go(_$$0, _$$1, Prelude_zip(_$$0.h1, _$$0.h2))); const Prelude_zip = ( _$$2, _$$3 ) => (( (_$$3.tag) == (1) ? ( (_$$2.tag) == (1) ? Prelude__$3A$3A_(Prelude__$2C_(_$$2.h1, _$$3.h1), Prelude_zip(_$$2.h2, _$$3.h2)) : Prelude_Nil() ) : Prelude_Nil() )); -const Lib_Elab_contextMatches_go = ( _, _1, _$$3 ) => (( (_$$3.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_.h0, _$$3.h1.h3.h3), ( type ) => { const sc$$16 = Lib_Elab_isCandidate(_1, type); switch (sc$$16) { case true: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_catchError(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((((("TRY context ") + (_$$3.h1.h3.h2)) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), _.h2), type))), Prelude_Lin()))) + (" for ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_1))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(Lib_Types_getValFC(_1), _, _1, _$$3.h1.h3.h3), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, top.h5, tc.h6, tc.h7, tc.h8)))), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_.h0, _$$3.h1.h2), ( tm ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Prelude__$3A$3A_(Prelude__$2C_(tm, _$$3.h1.h3.h3), eta)), Lib_Elab_contextMatches_go(_, _1, _$$3.h2)))))))))), ( err ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((((("No match ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_1))) + (" ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), _.h2), type))), Prelude_Lin()))) + (" ")) + (Lib_Common_showError("", err))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, top.h5, tc.h6, tc.h7, tc.h8)))), ( _3 ) => (Lib_Elab_contextMatches_go(_, _1, _$$3.h2))))))))); case false: return Lib_Elab_contextMatches_go(_, _1, _$$3.h2); } }) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nil()) )); +const Lib_Elab_contextMatches_go = ( _, _1, _$$3 ) => (( (_$$3.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_.h0, _$$3.h1.h3.h3), ( type ) => { const sc$$16 = Lib_Elab_isCandidate(_1, type); switch (sc$$16) { case true: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_catchError(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((((("TRY context ") + (_$$3.h1.h3.h2)) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), _.h2), type))), Prelude_Lin()))) + (" for ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_1))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(Lib_Types_getValFC(_1), _, _1, _$$3.h1.h3.h3), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, top.h6, tc.h7, tc.h8, tc.h9)))), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_.h0, _$$3.h1.h2), ( tm ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Prelude__$3A$3A_(Prelude__$2C_(tm, _$$3.h1.h3.h3), eta)), Lib_Elab_contextMatches_go(_, _1, _$$3.h2)))))))))), ( err ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((((("No match ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_1))) + (" ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), _.h2), type))), Prelude_Lin()))) + (" ")) + (Lib_Common_showError("", err))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, top.h6, tc.h7, tc.h8, tc.h9)))), ( _3 ) => (Lib_Elab_contextMatches_go(_, _1, _$$3.h2))))))))); case false: return Lib_Elab_contextMatches_go(_, _1, _$$3.h2); } }) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nil()) )); const Lib_Elab_checkAutos_checkMeta = ( _, _1, _2, _3, _4, _$$6 ) => (bouncer(Lib_Elab_REC_checkAutos_checkMeta, { tag: 1, h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: null, h6: _$$6 })); const Lib_Elab_REC_checkAutos_checkMeta = ( arg ) => { if ((arg.h6.tag) == (1)) { if ((arg.h6.h2.tag) == (3)) { const sc$$13 = Lib_Common_Prelude_Eq$20Lib_Common_QName$2C_$3D$3D_(arg.h6.h2.h1, arg.h0); switch (sc$$13) { case true: return { tag: 0, h0: true }; case false: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6.h1 }; } } else { return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6.h1 }; } } else { return { tag: 0, h0: false }; } }; const Prelude_debugStr = (_, obj) => { @@ -330,7 +332,7 @@ const Prelude_debugStr = (_, obj) => { return go(obj) }; const Prelude_for_ = ( _$$2, appf$$3, _$$6, _$$7 ) => (Prelude__$3C$2A$3E_(appf$$3)(null)(null)(Prelude_return(appf$$3)(null)(( _$$3 ) => (0)))(Prelude_traverse(_$$2)(null)(null)(null)(appf$$3)(_$$7)(_$$6))); -const Lib_Elab_maybeCheck = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { switch (top.h5.h3) { case 2: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_setMetaMode(2), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(_$$0, ( _1 ) => (Lib_Elab_setMetaMode(1))))); case 0: return _$$0; } })); +const Lib_Elab_maybeCheck = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { switch (top.h6.h3) { case 2: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_setMetaMode(2), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(_$$0, ( _1 ) => (Lib_Elab_setMetaMode(1))))); case 0: return _$$0; } })); const Lib_Types_Solved = ( h0, h1, h2 ) => ({ tag: 1, h0: h0, h1: h1, h2: h2 }); const Lib_Elab__boundNames = ( _$$0 ) => (Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h3), Prelude_filter(( x ) => (Lib_Types_Prelude_Eq$20Lib_Types_BD$2C_$3D$3D_(x.h2, false)), Prelude_zip(_$$0.h3, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), _$$0.h2))))); const Lib_Types_Prelude_Eq$20Lib_Types_BD$2C_$3D$3D_ = ( _$$0, _$$1 ) => { switch (_$$1) { case true: switch (_$$0) { case true: return true; default: return false; } break; case false: switch (_$$0) { case false: return true; default: return false; } break; } }; @@ -343,7 +345,7 @@ const Prelude_REC_findIndex$27_go = ( arg ) => { if ((arg.h4.tag) == (1)) { cons const Lib_Common_Postpone = ( h0, h1, h2 ) => ({ tag: 1, h0: h0, h1: h1, h2: h2 }); const Lib_Elab_invert = ( _$$0, _$$1 ) => (Lib_Elab_invert_go(_$$0, _$$1, _$$1, Prelude_Nil())); const Lib_Elab_invert_go = ( _, _1, _$$3, _$$4 ) => (bouncer(Lib_Elab_REC_invert_go, { tag: 1, h0: _, h1: _1, h2: null, h3: _$$3, h4: _$$4 })); -const Lib_Elab_REC_invert_go = ( arg ) => { if ((arg.h3.tag) == (1)) { if ((arg.h3.h2.tag) == (0)) { if ((arg.h3.h2.h2.tag) == (0)) { const sc$$12 = Prelude_elem(Prelude_Prelude_Eq$20Prim_Int, arg.h3.h2.h1, arg.h4); switch (sc$$12) { case true: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("") + (Prelude_showInt(arg.h3.h2.h1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_Int, arg.h4))) + (""))), ( _ ) => (Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(arg.h3.h2.h0, (("non-linear pattern: ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(arg.h1, Prelude_Nil())))) + (""))), eta)))))) }; case false: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3.h1, h4: Prelude__$3A$3A_(arg.h3.h2.h1, arg.h4) }; } } else { return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("non-variable in pattern ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h3.h2))) + (""))), eta)))) }; } } else { return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("non-variable in pattern ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h3.h2))) + (""))), eta)))) }; } } else { return { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_reverse()(arg.h4)) }; } }; +const Lib_Elab_REC_invert_go = ( arg ) => { if ((arg.h3.tag) == (1)) { if ((arg.h3.h2.tag) == (0)) { if ((arg.h3.h2.h2.tag) == (0)) { const sc$$12 = Prelude_elem(Prelude_Prelude_Eq$20Prim_Int, arg.h3.h2.h1, arg.h4); switch (sc$$12) { case true: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("") + (Prelude_showInt(arg.h3.h2.h1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_Int, arg.h4))) + (""))), ( _ ) => (Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(arg.h3.h2.h0, (("non-linear pattern: ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, Prelude__$3C$3E$3E_(arg.h1, Prelude_Nil())))) + (""))), eta)))))) }; case false: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3.h1, h4: Prelude__$3A$3A_(arg.h3.h2.h1, arg.h4) }; } } else { return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_getValFC(arg.h3.h2), (("non-variable in pattern ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h3.h2))) + (""))), eta)))) }; } } else { return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_getValFC(arg.h3.h2), (("non-variable in pattern ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h3.h2))) + (""))), eta)))) }; } } else { return { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_reverse()(arg.h4)) }; } }; const Prelude_Prelude_Eq$20Prim_Int$2C_$3D$3D_ = ( _$$0, _$$1 ) => ((_$$0) == (_$$1)); const Prelude_MkEq = ( h1 ) => ({ tag: 0, h1: h1 }); const Prelude_Prelude_Eq$20Prim_Int = Prelude_MkEq(( eta ) => (( eta1 ) => (Prelude_Prelude_Eq$20Prim_Int$2C_$3D$3D_(eta, eta1)))); @@ -354,7 +356,7 @@ const Lib_Types_tryError = ( _$$1 ) => (Lib_Types_catchError(Lib_Types_Prelude_F const Lib_Types_Prelude_Show$20Lib_Types_MetaEntry$2Cshow = ( _$$0 ) => { switch (_$$0.tag) { case 2: return "OutOfScope"; case 1: return (((("Solved ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0.h1))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h2))) + (""); case 0: return (((((((((((("Unsolved ") + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(_$$0.h0))) + (" ")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0.h1))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_MetaKind$2Cshow(_$$0.h4))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$0.h3))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_BD, _$$0.h2.h3))) + (" cs ")) + (Prelude_showInt(Prelude_natToInt(Prelude_length(_$$0.h5))))) + (""); } }; const Lib_Types_Prelude_Show$20Lib_Types_BD$2Cshow = ( _$$0 ) => { switch (_$$0) { case true: return "def"; case false: return "bnd"; } }; const Lib_Types_Prelude_Show$20Lib_Types_BD = Prelude_MkShow(( eta ) => (Lib_Types_Prelude_Show$20Lib_Types_BD$2Cshow(eta))); -const Lib_Types_Prelude_Show$20Lib_Types_MetaKind$2Cshow = ( _$$0 ) => { switch (_$$0) { case 2: return "Auto"; case 1: return "User"; case 0: return "Normal"; } }; +const Lib_Types_Prelude_Show$20Lib_Types_MetaKind$2Cshow = ( _$$0 ) => { switch (_$$0) { case 3: return "ErrorHole"; case 2: return "Auto"; case 1: return "User"; case 0: return "Normal"; } }; const Prelude_Prelude_Eq$20Prelude_Nat$2C_$3D$3D_ = ( _$$0, _$$1 ) => (bouncer(Prelude_REC_Prelude_Eq$20Prelude_Nat$2C_$3D$3D_, { tag: 1, h0: _$$0, h1: _$$1 })); const Prelude_REC_Prelude_Eq$20Prelude_Nat$2C_$3D$3D_ = ( arg ) => { switch (arg.h1) { case 0: switch (arg.h0) { case 0: return { tag: 0, h0: true }; default: return { tag: 0, h0: false }; } break; default: { const x = (arg.h1) - (1); switch (arg.h0) { case 0: return { tag: 0, h0: false }; default: { const x1 = (arg.h0) - (1); return { tag: 1, h0: x1, h1: x }; break; } } break; } } }; const Prelude_Prelude_Ord$20Prelude_Nat$2Ccompare = ( _$$0, _$$1 ) => (bouncer(Prelude_REC_Prelude_Ord$20Prelude_Nat$2Ccompare, { tag: 1, h0: _$$0, h1: _$$1 })); @@ -373,16 +375,16 @@ const Lib_Syntax_Prelude_Show$20Lib_Syntax_UpdateClause$2Cshow = ( _$$0 ) => (( const Lib_Syntax_Prelude_Show$20Lib_Syntax_UpdateClause = Prelude_MkShow(( eta ) => (Lib_Syntax_Prelude_Show$20Lib_Syntax_UpdateClause$2Cshow(eta))); const Lib_Elab_insert = ( ctx$$0, _$$1, _$$2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta(_$$2), ( ty$27 ) => { if ((ty$27.tag) == (5)) { switch (ty$27.h2) { case 2: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(ctx$$0, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm$2CgetFC(_$$1), ty$27.h4, 2), ( m ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("INSERT Auto ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), ctx$$0.h2), m))), Prelude_Lin()))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(ty$27.h4))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("TM ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), ctx$$0.h2), _$$1))), Prelude_Lin()))) + (""))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(ctx$$0.h1, m), ( mv ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(mv, ty$27.h5.h0), ty$27.h5.h1), ( bapp ) => (Lib_Elab_insert(ctx$$0, Lib_Types_App(Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm$2CgetFC(_$$1), _$$1, m), bapp))))))))))); case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(ctx$$0, Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm$2CgetFC(_$$1), ty$27.h4, 0), ( m ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("INSERT ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), ctx$$0.h2), m))), Prelude_Lin()))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(ty$27.h4))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("TM ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), ctx$$0.h2), _$$1))), Prelude_Lin()))) + (""))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(ctx$$0.h1, m), ( mv ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(mv, ty$27.h5.h0), ty$27.h5.h1), ( bapp ) => (Lib_Elab_insert(ctx$$0, Lib_Types_App(Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm$2CgetFC(_$$1), _$$1, m), bapp))))))))))); default: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(_$$1, ty$27)); } } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(_$$1, ty$27)); } })); const Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm$2CgetFC = ( _$$0 ) => { switch (_$$0.tag) { case 11: return _$$0.h0; case 10: return _$$0.h0; case 9: return _$$0.h0; case 8: return _$$0.h0; case 7: return _$$0.h0; case 6: return _$$0.h0; case 5: return _$$0.h0; case 4: return _$$0.h0; case 3: return _$$0.h0; case 2: return _$$0.h0; case 1: return _$$0.h0; case 0: return _$$0.h0; } }; -const Lib_Elab_freshMeta = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("fresh meta ") + (Prelude_showInt(top.h5.h2))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$2))) + (" (")) + (Lib_Types_Prelude_Show$20Lib_Types_MetaKind$2Cshow(_$$3))) + (")"))), ( _ ) => { const qn = Lib_Common_QN(top.h3, (("$m") + (Prelude_showInt(top.h5.h2))) + ("")); const newmeta = Lib_Types_Unsolved(_$$1, qn, _$$0, _$$2, _$$3, Prelude_Nil()); let autos; switch (_$$3) { case 2: { autos = Prelude__$3A$3A_(qn, top.h5.h1); break; } default: { autos = top.h5.h1; break; } } return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, Lib_Types_MC(Data_SortedMap_updateMap(qn, newmeta, top.h5.h0), autos, (1) + (top.h5.h2), top.h5.h3), tc.h6, tc.h7, tc.h8)))), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Elab_freshMeta_applyBDs(_$$0, _$$1, _$$2, _$$3, 0, Lib_Types_Meta(_$$1, qn), _$$0.h3)))); })))); +const Lib_Elab_freshMeta = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("fresh meta ") + (Prelude_showInt(top.h6.h2))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$2))) + (" (")) + (Lib_Types_Prelude_Show$20Lib_Types_MetaKind$2Cshow(_$$3))) + (")"))), ( _ ) => { const qn = Lib_Common_QN(top.h4, (("$m") + (Prelude_showInt(top.h6.h2))) + ("")); const newmeta = Lib_Types_Unsolved(_$$1, qn, _$$0, _$$2, _$$3, Prelude_Nil()); let autos; switch (_$$3) { case 2: { autos = Prelude__$3A$3A_(qn, top.h6.h1); break; } default: { autos = top.h6.h1; break; } } return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, Lib_Types_MC(Data_SortedMap_updateMap(qn, newmeta, top.h6.h0), autos, (1) + (top.h6.h2), top.h6.h3), tc.h7, tc.h8, tc.h9)))), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Elab_freshMeta_applyBDs(_$$0, _$$1, _$$2, _$$3, 0, Lib_Types_Meta(_$$1, qn), _$$0.h3)))); })))); const Lib_Elab_freshMeta_applyBDs = ( _, _1, _2, _3, _$$5, _$$6, _$$7 ) => (bouncer(Lib_Elab_REC_freshMeta_applyBDs, { tag: 1, h0: _, h1: _1, h2: _2, h3: _3, h4: null, h5: _$$5, h6: _$$6, h7: _$$7 })); const Lib_Elab_REC_freshMeta_applyBDs = ( arg ) => { if ((arg.h7.tag) == (1)) { switch (arg.h7.h1) { case true: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: (1) + (arg.h5), h6: arg.h6, h7: arg.h7.h2 }; case false: return { tag: 0, h0: Lib_Types_App(Lib_Common_emptyFC, Lib_Elab_freshMeta_applyBDs(arg.h0, arg.h1, arg.h2, arg.h3, (1) + (arg.h5), arg.h6, arg.h7.h2), Lib_Types_Bnd(Lib_Common_emptyFC, arg.h5)) }; } } else { return { tag: 0, h0: arg.h6 }; } }; -const Lib_Elab_infer = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case 15: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, "I can't infer record updates")), eta)))); case 14: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, "@ can only be used in patterns")), eta)))); case 9: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0), ( ty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, ty), ( vty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h0, vty, 0), ( tm ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(tm, vty)))))))); case 7: switch (_$$1.h1.tag) { case 2: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_primType(_$$1.h0, Lib_Elab_charType), ( ty ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Lit(_$$1.h0, Lib_Types_LChar(_$$1.h1.h0)), ty)))); case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_primType(_$$1.h0, Lib_Elab_intType), ( ty ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Lit(_$$1.h0, Lib_Types_LInt(_$$1.h1.h0)), ty)))); case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_primType(_$$1.h0, Lib_Elab_stringType), ( ty ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Lit(_$$1.h0, Lib_Types_LString(_$$1.h1.h0)), ty)))); default: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$1), (("Implement infer ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$1))) + (""))), eta)))); } break; case 6: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h2, Lib_Types_VU(Lib_Common_emptyFC)), ( ty$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, ty$27), ( vty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h3, vty), ( v$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, v$27), ( vv ) => { const ctx$27 = Lib_Types_define(_$$0, _$$1.h1, vv, vty); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(ctx$27, _$$1.h4), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Let(_$$1.h0, _$$1.h1, v$27, $$sc.h2), $$sc.h3)))); }))))))); case 5: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h2, Lib_Types_VU(_$$1.h1.h0)), ( ty$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, ty$27), ( vty$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_extend(_$$0, _$$1.h1.h1, vty$27), _$$1.h3, Lib_Types_VU(_$$1.h1.h0)), ( ty2$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Pi(_$$1.h1.h0, _$$1.h1.h1, _$$1.h1.h2, _$$1.h1.h3, ty$27, ty2$27), Lib_Types_VU(_$$1.h1.h0))))))))); case 3: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_UU(_$$1.h0), Lib_Types_VU(_$$1.h0))); case 2: switch (_$$1.h3) { case 2: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, _$$1.h1), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(2, Prelude__$2C_($$sc.h2, $$sc.h3))))), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta($$sc.h3.h3), ( tty$27 ) => { if ((tty$27.tag) == (5)) { const sc$$24 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(tty$27.h2, $$sc.h2); switch (sc$$24) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(tty$27.h4, tty$27.h5)); case false: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, (((("IcitMismatch ") + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow($$sc.h2))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(tty$27.h2))) + (""))), eta)))); } } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("unify PI for ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(tty$27))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0), ( eta ) => (Lib_Eval_eval(_$$0.h1, eta))), ( a ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_MkClosure(_$$0.h1, eta)), Lib_Elab_freshMeta(Lib_Types_extend(_$$0, ":ins", a), _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0)), ( b ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(_$$1.h0, _$$0, tty$27, Lib_Types_VPi(_$$1.h0, ":ins", $$sc.h2, true, a, b)), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(a, b)))))))))); } }), ( $$sc1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h2, $$sc1.h2), ( u ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, u), ( u$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(u$27, $$sc1.h3.h0), $$sc1.h3.h1), ( bappu ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_App(_$$1.h0, $$sc.h3.h2, u), bappu)))))))))))); case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, _$$1.h1), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_insert(_$$0, $$sc.h2, $$sc.h3), ( $$sc1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(1, Prelude__$2C_($$sc1.h2, $$sc1.h3))))))), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta($$sc.h3.h3), ( tty$27 ) => { if ((tty$27.tag) == (5)) { const sc$$24 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(tty$27.h2, $$sc.h2); switch (sc$$24) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(tty$27.h4, tty$27.h5)); case false: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, (((("IcitMismatch ") + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow($$sc.h2))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(tty$27.h2))) + (""))), eta)))); } } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("unify PI for ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(tty$27))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0), ( eta ) => (Lib_Eval_eval(_$$0.h1, eta))), ( a ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_MkClosure(_$$0.h1, eta)), Lib_Elab_freshMeta(Lib_Types_extend(_$$0, ":ins", a), _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0)), ( b ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(_$$1.h0, _$$0, tty$27, Lib_Types_VPi(_$$1.h0, ":ins", $$sc.h2, true, a, b)), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(a, b)))))))))); } }), ( $$sc1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h2, $$sc1.h2), ( u ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, u), ( u$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(u$27, $$sc1.h3.h0), $$sc1.h3.h1), ( bappu ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_App(_$$1.h0, $$sc.h3.h2, u), bappu)))))))))))); case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, _$$1.h1), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(0, Prelude__$2C_($$sc.h2, $$sc.h3))))), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta($$sc.h3.h3), ( tty$27 ) => { if ((tty$27.tag) == (5)) { const sc$$24 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(tty$27.h2, $$sc.h2); switch (sc$$24) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(tty$27.h4, tty$27.h5)); case false: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, (((("IcitMismatch ") + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow($$sc.h2))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(tty$27.h2))) + (""))), eta)))); } } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("unify PI for ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(tty$27))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0), ( eta ) => (Lib_Eval_eval(_$$0.h1, eta))), ( a ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_MkClosure(_$$0.h1, eta)), Lib_Elab_freshMeta(Lib_Types_extend(_$$0, ":ins", a), _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0)), ( b ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(_$$1.h0, _$$0, tty$27, Lib_Types_VPi(_$$1.h0, ":ins", $$sc.h2, true, a, b)), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(a, b)))))))))); } }), ( $$sc1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h2, $$sc1.h2), ( u ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, u), ( u$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(u$27, $$sc1.h3.h0), $$sc1.h3.h1), ( bappu ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_App(_$$1.h0, $$sc.h3.h2, u), bappu)))))))))))); } break; case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0), ( eta ) => (Lib_Eval_eval(_$$0.h1, eta))), ( a ) => { const ctx$27 = Lib_Types_extend(_$$0, _$$1.h1.h1, a); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(ctx$27, _$$1.h2), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("make lam for ") + (_$$1.h1.h1)) + (" scope ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), _$$0.h2), $$sc.h2))), Prelude_Lin()))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow($$sc.h3))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote((1) + (_$$0.h0), $$sc.h3), ( tyb ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Lam(_$$1.h1.h0, _$$1.h1.h1, _$$1.h1.h2, _$$1.h1.h3, $$sc.h2), Lib_Types_VPi(_$$1.h1.h0, _$$1.h1.h1, _$$1.h1.h2, _$$1.h1.h3, a, Lib_Types_MkClosure(_$$0.h1, tyb)))))))))); }); case 0: return Lib_Elab_infer_entryNS_go(_$$0, _$$1, _$$1.h0, _$$1.h1, 0, _$$0.h2); default: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$1), (("Implement infer ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$1))) + (""))), eta)))); } }; +const Lib_Elab_infer = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case 15: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, "I can't infer record updates")), eta)))); case 14: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, "@ can only be used in patterns")), eta)))); case 9: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0), ( ty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, ty), ( vty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h0, vty, 0), ( tm ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(tm, vty)))))))); case 7: switch (_$$1.h1.tag) { case 2: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Lit(_$$1.h0, Lib_Types_LChar(_$$1.h1.h0)), Lib_Types_VRef(_$$1.h0, Lib_Elab_charType, Prelude_Lin()))); case 1: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Lit(_$$1.h0, Lib_Types_LInt(_$$1.h1.h0)), Lib_Types_VRef(_$$1.h0, Lib_Elab_intType, Prelude_Lin()))); case 0: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Lit(_$$1.h0, Lib_Types_LString(_$$1.h1.h0)), Lib_Types_VRef(_$$1.h0, Lib_Elab_stringType, Prelude_Lin()))); default: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$1), (("Implement infer ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$1))) + (""))), eta)))); } break; case 6: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h2, Lib_Types_VU(Lib_Common_emptyFC)), ( ty$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, ty$27), ( vty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h3, vty), ( v$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, v$27), ( vv ) => { const ctx$27 = Lib_Types_define(_$$0, _$$1.h1, vv, vty); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(ctx$27, _$$1.h4), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Let(_$$1.h0, _$$1.h1, v$27, $$sc.h2), $$sc.h3)))); }))))))); case 5: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h2, Lib_Types_VU(_$$1.h1.h0)), ( ty$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, ty$27), ( vty$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_extend(_$$0, _$$1.h1.h1, vty$27), _$$1.h3, Lib_Types_VU(_$$1.h1.h0)), ( ty2$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Pi(_$$1.h1.h0, _$$1.h1.h1, _$$1.h1.h2, _$$1.h1.h3, ty$27, ty2$27), Lib_Types_VU(_$$1.h1.h0))))))))); case 3: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_UU(_$$1.h0), Lib_Types_VU(_$$1.h0))); case 2: switch (_$$1.h3) { case 2: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, _$$1.h1), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(2, Prelude__$2C_($$sc.h2, $$sc.h3))))), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta($$sc.h3.h3), ( tty$27 ) => { if ((tty$27.tag) == (5)) { const sc$$24 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(tty$27.h2, $$sc.h2); switch (sc$$24) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(tty$27.h4, tty$27.h5)); case false: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, (((("IcitMismatch ") + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow($$sc.h2))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(tty$27.h2))) + (""))), eta)))); } } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("unify PI for ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(tty$27))) + (" at ")) + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(Lib_Types_getValFC(tty$27)))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0), ( eta ) => (Lib_Eval_eval(_$$0.h1, eta))), ( a ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_MkClosure(_$$0.h1, eta)), Lib_Elab_freshMeta(Lib_Types_extend(_$$0, ":ins", a), _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0)), ( b ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(_$$1.h0, _$$0, tty$27, Lib_Types_VPi(_$$1.h0, ":ins", $$sc.h2, true, a, b)), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(a, b)))))))))); } }), ( $$sc1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h2, $$sc1.h2), ( u ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, u), ( u$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(u$27, $$sc1.h3.h0), $$sc1.h3.h1), ( bappu ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_App(_$$1.h0, $$sc.h3.h2, u), bappu)))))))))))); case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, _$$1.h1), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_insert(_$$0, $$sc.h2, $$sc.h3), ( $$sc1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(1, Prelude__$2C_($$sc1.h2, $$sc1.h3))))))), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta($$sc.h3.h3), ( tty$27 ) => { if ((tty$27.tag) == (5)) { const sc$$24 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(tty$27.h2, $$sc.h2); switch (sc$$24) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(tty$27.h4, tty$27.h5)); case false: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, (((("IcitMismatch ") + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow($$sc.h2))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(tty$27.h2))) + (""))), eta)))); } } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("unify PI for ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(tty$27))) + (" at ")) + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(Lib_Types_getValFC(tty$27)))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0), ( eta ) => (Lib_Eval_eval(_$$0.h1, eta))), ( a ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_MkClosure(_$$0.h1, eta)), Lib_Elab_freshMeta(Lib_Types_extend(_$$0, ":ins", a), _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0)), ( b ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(_$$1.h0, _$$0, tty$27, Lib_Types_VPi(_$$1.h0, ":ins", $$sc.h2, true, a, b)), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(a, b)))))))))); } }), ( $$sc1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h2, $$sc1.h2), ( u ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, u), ( u$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(u$27, $$sc1.h3.h0), $$sc1.h3.h1), ( bappu ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_App(_$$1.h0, $$sc.h3.h2, u), bappu)))))))))))); case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(_$$0, _$$1.h1), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(0, Prelude__$2C_($$sc.h2, $$sc.h3))))), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta($$sc.h3.h3), ( tty$27 ) => { if ((tty$27.tag) == (5)) { const sc$$24 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(tty$27.h2, $$sc.h2); switch (sc$$24) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(tty$27.h4, tty$27.h5)); case false: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0, (((("IcitMismatch ") + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow($$sc.h2))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(tty$27.h2))) + (""))), eta)))); } } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("unify PI for ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(tty$27))) + (" at ")) + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(Lib_Types_getValFC(tty$27)))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0), ( eta ) => (Lib_Eval_eval(_$$0.h1, eta))), ( a ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_MkClosure(_$$0.h1, eta)), Lib_Elab_freshMeta(Lib_Types_extend(_$$0, ":ins", a), _$$1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0)), ( b ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_unifyCatch(_$$1.h0, _$$0, tty$27, Lib_Types_VPi(_$$1.h0, ":ins", $$sc.h2, true, a, b)), ( _1 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(a, b)))))))))); } }), ( $$sc1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h2, $$sc1.h2), ( u ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, u), ( u$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(u$27, $$sc1.h3.h0), $$sc1.h3.h1), ( bappu ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_App(_$$1.h0, $$sc.h3.h2, u), bappu)))))))))))); } break; case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$1.h1.h0, Lib_Types_VU(Lib_Common_emptyFC), 0), ( eta ) => (Lib_Eval_eval(_$$0.h1, eta))), ( a ) => { const ctx$27 = Lib_Types_extend(_$$0, _$$1.h1.h1, a); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_infer(ctx$27, _$$1.h2), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("make lam for ") + (_$$1.h1.h1)) + (" scope ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), _$$0.h2), $$sc.h2))), Prelude_Lin()))) + (" : ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow($$sc.h3))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote((1) + (_$$0.h0), $$sc.h3), ( tyb ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Lam(_$$1.h1.h0, _$$1.h1.h1, _$$1.h1.h2, _$$1.h1.h3, $$sc.h2), Lib_Types_VPi(_$$1.h1.h0, _$$1.h1.h1, _$$1.h1.h2, _$$1.h1.h3, a, Lib_Types_MkClosure(_$$0.h1, tyb)))))))))); }); case 0: return Lib_Elab_infer_entryNS_go(_$$0, _$$1, _$$1.h0, _$$1.h1, 0, _$$0.h2); default: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$1), (("Implement infer ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$1))) + (""))), eta)))); } }; const Lib_Elab_infer_entryNS_go = ( _, _1, _2, _3, _$$6, _$$7 ) => (bouncer(Lib_Elab_REC_infer_entryNS_go, { tag: 1, h0: _, h1: _1, h2: _2, h3: _3, h4: null, h5: null, h6: _$$6, h7: _$$7 })); const Lib_Elab_REC_infer_entryNS_go = ( arg ) => { if ((arg.h7.tag) == (1)) { const sc$$15 = (arg.h7.h1.h2) == (arg.h3); switch (sc$$15) { case true: return { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Bnd(arg.h2, arg.h6), arg.h7.h1.h3)) }; case false: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: (arg.h6) + (1), h7: arg.h7.h2 }; } } else { return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$10 = Lib_TopContext_lookupRaw(arg.h3, top); if ((sc$$10.tag) == (1)) { const mods = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Elab_infer_entryNS(arg.h0, arg.h1, arg.h2, arg.h3, eta)), Lib_TopContext_lookupAll(arg.h3, top)); const extra = ( (mods.tag) == (0) ? "" : ((", try importing: ") + (Prelude_joinBy(", ", mods))) + ("") ); return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(arg.h2, (((("") + (arg.h3)) + (" not in scope")) + (extra)) + (""))), eta)))); } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("lookup ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$10.h1.h1))) + (" as ")) + (Lib_Types_Prelude_Show$20Lib_Types_Def$2Cshow(sc$$10.h1.h3))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), sc$$10.h1.h2), ( vty ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Lib_Types_Ref(arg.h2, sc$$10.h1.h1), vty)))))); } }) }; } }; const Lib_Types_Prelude_Show$20Lib_Types_Def$2Cshow = ( _$$0 ) => { switch (_$$0.tag) { case 6: return (("PrimOp ") + (_$$0.h0)) + (""); case 5: return (((((("PrimFn ") + (_$$0.h0)) + (" ")) + (Prelude_showInt(Prelude_natToInt(_$$0.h1)))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, _$$0.h2))) + (""); case 4: return "PrimTCon"; case 3: return (("Fn ") + (Lib_Types_Prelude_Show$20Lib_Types_Tm$2Cshow(_$$0.h0))) + (""); case 2: return (((((((("DCon ") + (Prelude_showInt(Prelude_natToInt(_$$0.h0)))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Quant, _$$0.h2))) + (" ")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0.h3))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_ConInfo$2Cshow(_$$0.h1))) + (""); case 1: return (("TCon ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, _$$0.h1))) + (""); case 0: return "axiom"; } }; const Lib_Types_Prelude_Show$20Lib_Types_ConInfo$2Cshow = ( _$$0 ) => { switch (_$$0) { case 5: return "[F]"; case 4: return "[T]"; case 3: return "[E]"; case 2: return "[Z]"; case 1: return "[S]"; case 0: return ""; } }; const Lib_Types_Prelude_Show$20Lib_Types_Quant = Prelude_MkShow(( eta ) => (Lib_Types_Prelude_Show$20Lib_Types_Quant$2Cshow(eta))); -const Lib_TopContext_lookupAll = ( _$$0, _$$1 ) => (Prelude_mapMaybe(( _$$5 ) => (Lib_TopContext_lookup(_$$5, _$$1)), Prelude__$3A$3A_(Lib_Common_QN(_$$1.h3, _$$0), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$5 ) => (Lib_Common_QN(_$$5, _$$0)), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), Data_SortedMap_toList(_$$1.h0)))))); +const Lib_TopContext_lookupAll = ( _$$0, _$$1 ) => (Prelude_mapMaybe(( _$$5 ) => (Lib_TopContext_lookup(_$$5, _$$1)), Prelude__$3A$3A_(Lib_Common_QN(_$$1.h4, _$$0), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$5 ) => (Lib_Common_QN(_$$5, _$$0)), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), Data_SortedMap_toList(_$$1.h0)))))); const Data_SortedMap_toList = ( _$$2 ) => (( (_$$2.tag) == (1) ? Prelude_reverse()(Data_SortedMap_toList_go(_$$2, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h3, _$$2.h4, _$$2.h4, Prelude_Nil())) : Prelude_Nil() )); const Data_SortedMap_toList_go = ( _, _1, _2, _3, _4, _5, _$$10, _$$11 ) => (bouncer(Data_SortedMap_REC_toList_go, { tag: 1, h0: null, h1: null, h2: _, h3: _1, h4: _2, h5: _3, h6: _4, h7: _5, h8: null, h9: null, h10: _$$10, h11: _$$11 })); const Data_SortedMap_REC_toList_go = ( arg ) => { switch (arg.h10.tag) { case 2: return { tag: 1, 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: null, h10: arg.h10.h7, h11: Data_SortedMap_toList_go(arg.h2, arg.h3, arg.h4, arg.h5, arg.h6, arg.h7, arg.h10.h5, Data_SortedMap_toList_go(arg.h2, arg.h3, arg.h4, arg.h5, arg.h6, arg.h7, arg.h10.h3, arg.h11)) }; case 1: return { tag: 1, 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: null, h10: arg.h10.h5, h11: Data_SortedMap_toList_go(arg.h2, arg.h3, arg.h4, arg.h5, arg.h6, arg.h7, arg.h10.h3, arg.h11) }; case 0: return { tag: 0, h0: Prelude__$3A$3A_(Prelude__$2C_(arg.h10.h2, arg.h10.h3), arg.h11) }; } }; @@ -390,25 +392,23 @@ const Prelude_mapMaybe = ( _$$2, _$$3 ) => (Prelude_mapMaybe_go(_$$2, _$$3, Prel const Prelude_mapMaybe_go = ( _, _1, _$$5, _$$6 ) => (bouncer(Prelude_REC_mapMaybe_go, { tag: 1, h0: null, h1: null, h2: _, h3: _1, h4: null, h5: _$$5, h6: _$$6 })); const Prelude_REC_mapMaybe_go = ( arg ) => { if ((arg.h6.tag) == (1)) { const sc$$10 = arg.h2(arg.h6.h1); return ( (sc$$10.tag) == (1) ? { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6.h2 } : { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: Prelude__$3A$3C_(arg.h5, sc$$10.h1), h6: arg.h6.h2 } ); } else { return { tag: 0, h0: Prelude__$3C$3E$3E_(arg.h5, Prelude_Nil()) }; } }; const Lib_Elab_infer_entryNS = ( _, _1, _2, _3, _$$5 ) => (_$$5.h1.h0); -const Lib_TopContext_lookupRaw = ( _$$0, _$$1 ) => { const sc$$3 = Data_SortedMap_lookupMap$27(Lib_Common_QN(_$$1.h3, _$$0), _$$1.h4); return ( (sc$$3.tag) == (1) ? Lib_TopContext_lookupRaw_go(_$$0, _$$1, _$$1.h1) : Prelude_Just(sc$$3.h1) ); }; +const Lib_TopContext_lookupRaw = ( _$$0, _$$1 ) => { const sc$$3 = Data_SortedMap_lookupMap$27(Lib_Common_QN(_$$1.h4, _$$0), _$$1.h5); return ( (sc$$3.tag) == (1) ? Lib_TopContext_lookupRaw_go(_$$0, _$$1, _$$1.h1) : Prelude_Just(sc$$3.h1) ); }; const Lib_TopContext_lookupRaw_go = ( _, _1, _$$3 ) => (bouncer(Lib_TopContext_REC_lookupRaw_go, { tag: 1, h0: _, h1: _1, h2: null, h3: _$$3 })); const Lib_TopContext_REC_lookupRaw_go = ( arg ) => { if ((arg.h3.tag) == (1)) { const sc$$7 = Data_SortedMap_lookupMap$27(arg.h3.h1, arg.h1.h0); if ((sc$$7.tag) == (1)) { return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3.h2 }; } else { const sc$$10 = Data_SortedMap_lookupMap$27(Lib_Common_QN(arg.h3.h1, arg.h0), sc$$7.h1.h1); return ( (sc$$10.tag) == (1) ? { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3.h2 } : { tag: 0, h0: Prelude_Just(sc$$10.h1) } ); } } else { return { tag: 0, h0: Prelude_Nothing() }; } }; const Lib_Types_extend = ( _$$0, _$$1, _$$2 ) => (Lib_Types_MkCtx((1) + (_$$0.h0), Prelude__$3A$3A_(Lib_Types_VVar(Lib_Common_emptyFC, _$$0.h0, Prelude_Lin()), _$$0.h1), Prelude__$3A$3A_(Prelude__$2C_(_$$1, _$$2), _$$0.h2), Prelude__$3A$3A_(false, _$$0.h3), _$$0.h4)); const Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_ = ( _$$0, _$$1 ) => { switch (_$$1) { case 2: switch (_$$0) { case 2: return true; default: return false; } break; case 1: switch (_$$0) { case 1: return true; default: return false; } break; case 0: switch (_$$0) { case 0: return true; default: return false; } break; } }; const Lib_Types_define = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_MkCtx((1) + (_$$0.h0), Prelude__$3A$3A_(_$$2, _$$0.h1), Prelude__$3A$3A_(Prelude__$2C_(_$$1, _$$3), _$$0.h2), Prelude__$3A$3A_(true, _$$0.h3), _$$0.h4)); -const Lib_Types_LString = ( h0 ) => ({ tag: 0, h0: h0 }); const Lib_Elab_stringType = Lib_Common_QN(Lib_Common_primNS, "String"); -const Lib_Elab_primType = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$3 = Lib_TopContext_lookup(_$$1, top); return ( (sc$$3.tag) == (0) ? ( (sc$$3.h1.h3.tag) == (4) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_VRef(_$$0, sc$$3.h1.h1, Prelude_Lin())) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$0, (("Primitive type ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" not in scope"))), eta)))) ) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$0, (("Primitive type ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$1))) + (" not in scope"))), eta)))) ); })); -const Lib_Types_LInt = ( h0 ) => ({ tag: 1, h0: h0 }); +const Lib_Types_LString = ( h0 ) => ({ tag: 0, h0: h0 }); const Lib_Elab_intType = Lib_Common_QN(Lib_Common_primNS, "Int"); -const Lib_Types_LChar = ( h0 ) => ({ tag: 2, h0: h0 }); +const Lib_Types_LInt = ( h0 ) => ({ tag: 1, h0: h0 }); const Lib_Elab_charType = Lib_Common_QN(Lib_Common_primNS, "Char"); +const Lib_Types_LChar = ( h0 ) => ({ tag: 2, h0: h0 }); const Lib_Eval_prvalCtx = ( ctx$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(ctx$$0.h0, _$$1), ( tm ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), ctx$$0.h2), tm))), Prelude_Lin()))))); -const Lib_Types_logM = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_not(Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, _$$0, top.h6), 2)), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(_$$1, ( msg ) => (Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn(msg))))))))); +const Lib_Types_logM = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_not(Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, _$$0, top.h7), 2)), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(_$$1, ( msg ) => (Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn(msg))))))))); const Lib_Elab_MkProb = ( h0, h1 ) => ({ tag: 0, h0: h0, h1: h1 }); const Lib_Elab_buildTree = ( _$$0, _$$1 ) => { if ((_$$1.h0.tag) == (1)) { if ((_$$1.h0.h1.h2.tag) == (1)) { if ((_$$1.h1.tag) == (5)) { const l = Prelude_length$27(_$$0.h1); const nm = Lib_Elab_fresh(_$$0, _$$1.h1.h1); const ctx$27 = Lib_Types_extend(_$$0, nm, _$$1.h1.h4); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_introClause(nm, _$$1.h1.h2, _$$1.h1.h4, eta)), _$$1.h0), ( clauses ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(Lib_Types_VVar(_$$1.h0.h1.h0, l, Prelude_Lin()), _$$1.h1.h5.h0), _$$1.h1.h5.h1), ( vb ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_Lam(_$$1.h0.h1.h0, nm, _$$1.h1.h2, _$$1.h1.h3, eta)), Lib_Elab_buildTree(ctx$27, Lib_Elab_MkProb(clauses, vb))))))); } else { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0.h1.h0, (("Extra pattern variables ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Pattern, _$$1.h0.h1.h2))) + (""))), eta)))); } } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("buildTree ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Constraint, _$$1.h0.h1.h1))) + (" ")) + (Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, _$$1.h0.h1.h3))) + (""))), ( _ ) => { const sc$$13 = Lib_Elab_findSplit(_$$1.h0.h1.h1); return ( (sc$$13.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((((((("SPLIT on ") + (sc$$13.h1.h0)) + (" because ")) + (Lib_Types_Prelude_Show$20Lib_Types_Pattern$2Cshow(sc$$13.h1.h1))) + (" ")) + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(Lib_Types_Lib_Common_HasFC$20Lib_Types_Pattern$2CgetFC(sc$$13.h1.h1)))) + (""))), ( _1 ) => { const sc$$20 = Lib_Elab_lookupName(_$$0, sc$$13.h1.h0); return ( (sc$$20.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_unlet(_$$0.h1, sc$$20.h1.h3), ( eta ) => (Lib_Eval_forceType(_$$0.h1, eta))), ( scty$27 ) => (( (scty$27.tag) == (3) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_lookupMeta(scty$27.h1), ( meta ) => { switch (meta.tag) { case 2: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(scty$27); case 1: return Lib_Eval_forceType(_$$0.h1, scty$27); case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_solveAutos, ( _2 ) => (Lib_Eval_forceType(_$$0.h1, scty$27))); } }), ( scty$271 ) => { switch (sc$$13.h1.h1.tag) { case 3: { const tyname = Lib_Elab_litTyName(sc$$13.h1.h1.h1); return ( (scty$271.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_not(Lib_Common_Prelude_Eq$20Lib_Common_QName$2C_$3D$3D_(scty$271.h1, tyname)), ( _2 ) => (Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$13.h1.h1.h0, (((("expected ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$20.h1.h3))) + (" and got ")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(tyname))) + (""))), eta)))))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildLitCases(_$$0, _$$1, sc$$13.h1.h1.h0, sc$$13.h1.h0, sc$$20.h1.h3), ( alts ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Case(sc$$13.h1.h1.h0, sc$$20.h1.h2, alts)))))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$13.h1.h1.h0, (((("expected ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$20.h1.h3))) + (" and got ")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(tyname))) + (""))), eta)))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildLitCases(_$$0, _$$1, sc$$13.h1.h1.h0, sc$$13.h1.h0, sc$$20.h1.h3), ( alts ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Case(sc$$13.h1.h1.h0, sc$$20.h1.h2, alts)))))) ); break; } case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((("EXP ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$20.h1.h3))) + (" -> ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(scty$271))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_getConstructors(_$$0, Lib_Types_Lib_Common_HasFC$20Lib_Types_Pattern$2CgetFC(sc$$13.h1.h1), scty$271), ( cons ) => { const matched = Lib_Elab_matchedConstructors(sc$$13.h1.h0, _$$1.h0); const matched$27 = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h3), matched); const sc$$39 = Prelude_partition(( _$$5 ) => (Prelude_elem(Lib_Common_Prelude_Eq$20Lib_Common_QName, _$$5.h2, matched$27)), cons); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_filterM(( eta ) => (Lib_Elab_checkCase(_$$0, sc$$13.h1.h0, scty$271, eta)), sc$$39.h3), ( miss$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, matched, ( $$case ) => { const sc$$51 = Prelude_elem(Lib_Common_Prelude_Eq$20Lib_Common_QName, $$case.h3, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), cons)); switch (sc$$51) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); case false: return Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E($$case.h2, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$case.h3))) + (" not a constructor for ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$20.h1.h3))) + (""))), eta)))); } }), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _4 ) => ((((((((("CONS ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), cons)))) + (" matched ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_FC, Lib_Common_Prelude_Show$20Lib_Common_QName, eta))), matched))) + (" miss ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm, eta))), eta))), sc$$39.h3))) + (" miss' ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm, eta))), eta))), miss$27))) + (""))), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_buildCase(_$$0, _$$1, sc$$13.h1.h0, scty$271, eta)), sc$$39.h2), ( alts ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((("GOTALTS ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_CaseAlt, eta))), alts))) + (""))), ( _5 ) => { const alts$27 = Prelude_mapMaybe(( _$$11 ) => (_$$11), alts); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, (Prelude_length$27(alts$27)) == (0), ( _6 ) => (Lib_Types_MkM(( _7 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$13.h1.h1.h0, (("no alts for ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(scty$271))) + (""))), eta)))))), ( _6 ) => (( (miss$27.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Case(sc$$13.h1.h1.h0, sc$$20.h1.h2, Prelude_mapMaybe(( _$$11 ) => (_$$11), alts))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildDefault(_$$0, _$$1, sc$$13.h1.h1.h0, sc$$13.h1.h0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), miss$27)), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Case(sc$$13.h1.h1.h0, sc$$20.h1.h2, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(alts$27, Prelude__$3A$3A_($$sc, Prelude_Nil())))))) ))); }))))))))); }))); default: return Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_Lib_Common_HasFC$20Lib_Types_Pattern$2CgetFC(sc$$13.h1.h1), (("Internal error - tried to split on ") + (Lib_Types_Prelude_Show$20Lib_Types_Pattern$2Cshow(sc$$13.h1.h1))) + (""))), eta)))); } }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(scty$27), ( scty$271 ) => { switch (sc$$13.h1.h1.tag) { case 3: { const tyname = Lib_Elab_litTyName(sc$$13.h1.h1.h1); return ( (scty$271.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_not(Lib_Common_Prelude_Eq$20Lib_Common_QName$2C_$3D$3D_(scty$271.h1, tyname)), ( _2 ) => (Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$13.h1.h1.h0, (((("expected ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$20.h1.h3))) + (" and got ")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(tyname))) + (""))), eta)))))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildLitCases(_$$0, _$$1, sc$$13.h1.h1.h0, sc$$13.h1.h0, sc$$20.h1.h3), ( alts ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Case(sc$$13.h1.h1.h0, sc$$20.h1.h2, alts)))))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$13.h1.h1.h0, (((("expected ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$20.h1.h3))) + (" and got ")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(tyname))) + (""))), eta)))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildLitCases(_$$0, _$$1, sc$$13.h1.h1.h0, sc$$13.h1.h0, sc$$20.h1.h3), ( alts ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Case(sc$$13.h1.h1.h0, sc$$20.h1.h2, alts)))))) ); break; } case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((("EXP ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$20.h1.h3))) + (" -> ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(scty$271))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_getConstructors(_$$0, Lib_Types_Lib_Common_HasFC$20Lib_Types_Pattern$2CgetFC(sc$$13.h1.h1), scty$271), ( cons ) => { const matched = Lib_Elab_matchedConstructors(sc$$13.h1.h0, _$$1.h0); const matched$27 = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h3), matched); const sc$$39 = Prelude_partition(( _$$5 ) => (Prelude_elem(Lib_Common_Prelude_Eq$20Lib_Common_QName, _$$5.h2, matched$27)), cons); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_filterM(( eta ) => (Lib_Elab_checkCase(_$$0, sc$$13.h1.h0, scty$271, eta)), sc$$39.h3), ( miss$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, matched, ( $$case ) => { const sc$$51 = Prelude_elem(Lib_Common_Prelude_Eq$20Lib_Common_QName, $$case.h3, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), cons)); switch (sc$$51) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); case false: return Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E($$case.h2, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow($$case.h3))) + (" not a constructor for ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(sc$$20.h1.h3))) + (""))), eta)))); } }), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _4 ) => ((((((((("CONS ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), cons)))) + (" matched ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_FC, Lib_Common_Prelude_Show$20Lib_Common_QName, eta))), matched))) + (" miss ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm, eta))), eta))), sc$$39.h3))) + (" miss' ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Prelude_Prelude_Show$20Prim_Int, Lib_Types_Prelude_Show$20Lib_Types_Tm, eta))), eta))), miss$27))) + (""))), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_buildCase(_$$0, _$$1, sc$$13.h1.h0, scty$271, eta)), sc$$39.h2), ( alts ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((("GOTALTS ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_CaseAlt, eta))), alts))) + (""))), ( _5 ) => { const alts$27 = Prelude_mapMaybe(( _$$11 ) => (_$$11), alts); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, (Prelude_length$27(alts$27)) == (0), ( _6 ) => (Lib_Types_MkM(( _7 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$13.h1.h1.h0, (("no alts for ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(scty$271))) + (""))), eta)))))), ( _6 ) => (( (miss$27.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Case(sc$$13.h1.h1.h0, sc$$20.h1.h2, Prelude_mapMaybe(( _$$11 ) => (_$$11), alts))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildDefault(_$$0, _$$1, sc$$13.h1.h1.h0, sc$$13.h1.h0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), miss$27)), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Case(sc$$13.h1.h1.h0, sc$$20.h1.h2, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(alts$27, Prelude__$3A$3A_($$sc, Prelude_Nil())))))) ))); }))))))))); }))); default: return Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_Lib_Common_HasFC$20Lib_Types_Pattern$2CgetFC(sc$$13.h1.h1), (("Internal error - tried to split on ") + (Lib_Types_Prelude_Show$20Lib_Types_Pattern$2Cshow(sc$$13.h1.h1))) + (""))), eta)))); } }) ))) : Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h0.h1.h0, (("Internal Error: can't find ") + (sc$$13.h1.h0)) + (" in environment"))), eta)))) ); }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("checkDone ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Constraint, _$$1.h0.h1.h1))) + (""))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_checkDups(_$$1.h0.h1.h0)(_$$1.h0.h1.h1), ( _2 ) => (Lib_Elab_checkDone(_$$1.h0.h1.h0, _$$0, _$$1.h0.h1.h1, _$$1.h0.h1.h3, _$$1.h1))))) ); }); } } else { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, "no clauses")), eta)))); } }; -const Lib_Elab_checkDone = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (bouncer(Lib_Elab_REC_checkDone, { tag: 1, h0: _$$0, h1: _$$1, h2: _$$2, h3: _$$3, h4: _$$4 })); -const Lib_Elab_REC_checkDone = ( arg ) => { if ((arg.h3.tag) == (1)) { if ((arg.h2.tag) == (1)) { switch (arg.h2.h1.h1.tag) { case 4: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_getConstructors(arg.h1, arg.h0, arg.h2.h1.h2), ( cons ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_filterM(( eta ) => (Lib_Elab_checkCase(arg.h1, arg.h2.h1.h0, arg.h2.h1.h2, eta)), cons), ( $$sc ) => (( ($$sc.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Erased(arg.h0)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(arg.h2.h1.h1.h0, (("possible constructors: ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), $$sc)))) + (""))), eta)))) ))))) }; case 2: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2.h2, h3: arg.h3, h4: arg.h4 }; case 0: { const ctx = Lib_Types_MkCtx(arg.h1.h0, arg.h1.h1, Lib_Elab_checkDone_rename(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, arg.h3.h0, arg.h2.h0, arg.h2.h1, arg.h2.h2, arg.h2.h1.h0, arg.h2.h1.h1, arg.h2.h1.h2, arg.h2.h1.h1.h0, arg.h2.h1.h1.h1, arg.h2.h1.h1.h2, arg.h1.h2), arg.h1.h3, arg.h1.h4); return { tag: 1, h0: arg.h0, h1: ctx, h2: arg.h2.h2, h3: arg.h3, h4: arg.h4 }; break; } default: return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_Lib_Common_HasFC$20Lib_Types_Pattern$2CgetFC(arg.h2.h1.h1), (((("stray constraint ") + (arg.h2.h1.h0)) + (" /? ")) + (Lib_Types_Prelude_Show$20Lib_Types_Pattern$2Cshow(arg.h2.h1.h1))) + (""))), eta)))) }; } } else { return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(arg.h0, "impossible clause needs () on RHS")), eta)))) }; } } else { if ((arg.h2.tag) == (1)) { switch (arg.h2.h1.h1.tag) { case 4: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_getConstructors(arg.h1, arg.h0, arg.h2.h1.h2), ( cons ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_filterM(( eta ) => (Lib_Elab_checkCase(arg.h1, arg.h2.h1.h0, arg.h2.h1.h2, eta)), cons), ( $$sc ) => (( ($$sc.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Erased(arg.h0)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(arg.h2.h1.h1.h0, (("possible constructors: ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), $$sc)))) + (""))), eta)))) ))))) }; case 2: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2.h2, h3: arg.h3, h4: arg.h4 }; case 0: { const ctx = Lib_Types_MkCtx(arg.h1.h0, arg.h1.h1, Lib_Elab_checkDone_rename$27(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, arg.h3.h0, arg.h3.h1, arg.h2.h0, arg.h2.h1, arg.h2.h2, arg.h2.h1.h0, arg.h2.h1.h1, arg.h2.h1.h2, arg.h2.h1.h1.h0, arg.h2.h1.h1.h1, arg.h2.h1.h1.h2, arg.h1.h2), arg.h1.h3, arg.h1.h4); return { tag: 1, h0: arg.h0, h1: ctx, h2: arg.h2.h2, h3: arg.h3, h4: arg.h4 }; break; } default: return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_Lib_Common_HasFC$20Lib_Types_Pattern$2CgetFC(arg.h2.h1.h1), (((("stray constraint ") + (arg.h2.h1.h0)) + (" /? ")) + (Lib_Types_Prelude_Show$20Lib_Types_Pattern$2Cshow(arg.h2.h1.h1))) + (""))), eta)))) }; } } else { return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("DONE-> check body ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(arg.h3.h1))) + (" at ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(arg.h4))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_logM(2, Lib_Elab_showCtx(arg.h1)), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, arg.h1.h1, ( val ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(Prelude_length$27(arg.h1.h1), val), ( ty ) => (Lib_Eval_eval(arg.h1.h1, ty))))), ( env$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, arg.h1.h2, ( $$case ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(Prelude_length$27(env$27), $$case.h3), ( nty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(env$27, nty), ( ty$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_($$case.h2, ty$27)))))))), ( types$27 ) => { const ctx = Lib_Types_MkCtx(arg.h1.h0, env$27, types$27, arg.h1.h3, arg.h1.h4); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ("AFTER")), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_logM(2, Lib_Elab_showCtx(ctx)), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(Prelude_length$27(ctx.h1), arg.h4), ( ty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(ctx.h1, ty), ( ty1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _4 ) => ((("check at ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(ty1))) + (""))), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(ctx, arg.h3.h1, ty1), ( got ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((("DONE<- got ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), ctx.h2), got))), Prelude_Lin()))) + (""))), ( _5 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(got))))))))))))))); }))))))) }; } } }; +const Lib_Elab_checkDone = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => { if ((_$$3.tag) == (1)) { if ((_$$2.tag) == (1)) { switch (_$$2.h1.h1.tag) { case 4: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_getConstructors(_$$1, _$$0, _$$2.h1.h2), ( cons ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_filterM(( eta ) => (Lib_Elab_checkCase(_$$1, _$$2.h1.h0, _$$2.h1.h2, eta)), cons), ( $$sc ) => (( ($$sc.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Erased(_$$0)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$2.h1.h1.h0, (("possible constructors: ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), $$sc)))) + (""))), eta)))) ))))); case 2: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(_$$2.h1.h1.h1, 1), ( _ ) => (Lib_TopContext_addInfo(Lib_Types_CaseSplit(_$$2.h1.h1.h0, _$$1, "_", _$$2.h1.h2)))), ( _ ) => (Lib_Elab_checkDone(_$$0, _$$1, _$$2.h2, _$$3, _$$4))); case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_addInfo(Lib_Types_CaseSplit(_$$2.h1.h1.h0, _$$1, _$$2.h1.h1.h2, _$$2.h1.h2)), ( _ ) => { const ctx = Lib_Types_MkCtx(_$$1.h0, _$$1.h1, Lib_Elab_checkDone_rename(_$$0, _$$1, _$$2, _$$3, _$$4, _$$3.h0, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h1.h0, _$$2.h1.h1, _$$2.h1.h2, _$$2.h1.h1.h0, _$$2.h1.h1.h1, _$$2.h1.h1.h2, _$$1.h2), _$$1.h3, _$$1.h4); return Lib_Elab_checkDone(_$$0, ctx, _$$2.h2, _$$3, _$$4); }); default: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_Lib_Common_HasFC$20Lib_Types_Pattern$2CgetFC(_$$2.h1.h1), (((("stray constraint ") + (_$$2.h1.h0)) + (" /? ")) + (Lib_Types_Prelude_Show$20Lib_Types_Pattern$2Cshow(_$$2.h1.h1))) + (""))), eta)))); } } else { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$0, "impossible clause needs () on RHS")), eta)))); } } else { if ((_$$2.tag) == (1)) { switch (_$$2.h1.h1.tag) { case 4: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_getConstructors(_$$1, _$$0, _$$2.h1.h2), ( cons ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_filterM(( eta ) => (Lib_Elab_checkCase(_$$1, _$$2.h1.h0, _$$2.h1.h2, eta)), cons), ( $$sc ) => (( ($$sc.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_Erased(_$$0)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$2.h1.h1.h0, (("possible constructors: ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), $$sc)))) + (""))), eta)))) ))))); case 2: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(_$$2.h1.h1.h1, 1), ( _ ) => (Lib_TopContext_addInfo(Lib_Types_CaseSplit(_$$2.h1.h1.h0, _$$1, "_", _$$2.h1.h2)))), ( _ ) => (Lib_Elab_checkDone(_$$0, _$$1, _$$2.h2, _$$3, _$$4))); case 0: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_addInfo(Lib_Types_CaseSplit(_$$2.h1.h1.h0, _$$1, _$$2.h1.h1.h2, _$$2.h1.h2)), ( _ ) => { const ctx = Lib_Types_MkCtx(_$$1.h0, _$$1.h1, Lib_Elab_checkDone_rename$27(_$$0, _$$1, _$$2, _$$3, _$$4, _$$3.h0, _$$3.h1, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h1.h0, _$$2.h1.h1, _$$2.h1.h2, _$$2.h1.h1.h0, _$$2.h1.h1.h1, _$$2.h1.h1.h2, _$$1.h2), _$$1.h3, _$$1.h4); return Lib_Elab_checkDone(_$$0, ctx, _$$2.h2, _$$3, _$$4); }); default: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_Lib_Common_HasFC$20Lib_Types_Pattern$2CgetFC(_$$2.h1.h1), (((("stray constraint ") + (_$$2.h1.h0)) + (" /? ")) + (Lib_Types_Prelude_Show$20Lib_Types_Pattern$2Cshow(_$$2.h1.h1))) + (""))), eta)))); } } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("DONE-> check body ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$3.h1))) + (" at ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$4))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_logM(2, Lib_Elab_showCtx(_$$1)), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, _$$1.h1, ( val ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(Prelude_length$27(_$$1.h1), val), ( ty ) => (Lib_Eval_eval(_$$1.h1, ty))))), ( env$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, _$$1.h2, ( $$case ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(Prelude_length$27(env$27), $$case.h3), ( nty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(env$27, nty), ( ty$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_($$case.h2, ty$27)))))))), ( types$27 ) => { const ctx = Lib_Types_MkCtx(_$$1.h0, env$27, types$27, _$$1.h3, _$$1.h4); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ("AFTER")), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_logM(2, Lib_Elab_showCtx(ctx)), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(Prelude_length$27(ctx.h1), _$$4), ( ty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(ctx.h1, ty), ( ty1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _4 ) => ((("check at ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(ty1))) + (""))), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(ctx, _$$3.h1, ty1), ( got ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((("DONE<- got ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), ctx.h2), got))), Prelude_Lin()))) + (""))), ( _5 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(got))))))))))))))); }))))))); } } }; const Lib_Elab_showCtx = ( _$$0 ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( _$$5 ) => (Prelude_joinBy("\n", Prelude_reverse()(_$$5))), Lib_Elab_showCtx_isVar_go(_$$0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), _$$0.h2), 0, Prelude_reverse()(Prelude_zip(_$$0.h1, _$$0.h2)), Prelude_Nil()))); const Lib_Elab_showCtx_isVar_go = ( _, _$$3, _$$4, _$$5, _$$6 ) => { if ((_$$5.tag) == (1)) { const sc$$18 = Lib_Elab_showCtx_isVar(_, _$$4, _$$5.h1.h2); switch (sc$$18) { case true: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_.h0, _$$5.h1.h3.h3), ( tty ) => (Lib_Elab_showCtx_isVar_go(_, _$$3, (1) + (_$$4), _$$5.h2, Prelude__$3A$3A_(((((" ") + (_$$5.h1.h3.h2)) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, _$$3, tty))), Prelude_Lin()))) + (""), _$$6)))); case false: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_.h0, _$$5.h1.h2), ( tm ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_.h0, _$$5.h1.h3.h3), ( tty ) => (Lib_Elab_showCtx_isVar_go(_, _$$3, (1) + (_$$4), _$$5.h2, Prelude__$3A$3A_(((((((" ") + (_$$5.h1.h3.h2)) + (" = ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, _$$3, tm))), Prelude_Lin()))) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, _$$3, tty))), Prelude_Lin()))) + (""), _$$6)))))); } } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(_$$6); } }; const Lib_Elab_showCtx_isVar = ( _, _$$2, _$$3 ) => (( (_$$3.tag) == (0) ? ( (_$$3.h2.tag) == (0) ? (_$$2) == (_$$3.h1) : false ) : false )); @@ -416,6 +416,8 @@ const Lib_Types_Prelude_Show$20Lib_Types_Pattern$2Cshow = ( _$$0 ) => { switch ( const Lib_Types_Prelude_Show$20Lib_Types_Pattern = Prelude_MkShow(( eta ) => (Lib_Types_Prelude_Show$20Lib_Types_Pattern$2Cshow(eta))); const Lib_Types_Lib_Common_HasFC$20Lib_Types_Pattern$2CgetFC = ( _$$0 ) => { switch (_$$0.tag) { case 4: return _$$0.h0; case 3: return _$$0.h0; case 2: return _$$0.h0; case 1: return _$$0.h0; case 0: return _$$0.h0; } }; const Lib_Elab_checkDone_rename$27 = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _$$17 ) => { if ((_$$17.tag) == (1)) { const sc$$25 = (_$$17.h1.h2) == (_10); switch (sc$$25) { case true: return Prelude__$3A$3A_(Prelude__$2C_(_15, _$$17.h1.h3), _$$17.h2); case false: return Prelude__$3A$3A_(Prelude__$2C_(_$$17.h1.h2, _$$17.h1.h3), Lib_Elab_checkDone_rename$27(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _$$17.h2)); } } else { return Prelude_Nil(); } }; +const Lib_Types_CaseSplit = ( h0, h1, h2, h3 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3 }); +const Lib_TopContext_addInfo = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, Prelude__$3A$3A_(_$$0, tc.h3), tc.h4, tc.h5, tc.h6, tc.h7, tc.h8, tc.h9))))))); const Lib_Elab_checkCase = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), _$$3.h3.h3), ( vty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_extendPi(_$$0, vty, Prelude_Lin(), Prelude_Lin()), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_tryError(Lib_Elab_unify($$sc.h2.h1, true, $$sc.h3.h2, _$$2)), ( $$sc1 ) => { if (($$sc1.tag) == (1)) { const sc$$32 = Lib_Elab_lookupDef(_$$0, _$$1); return ( (sc$$32.tag) == (0) ? ( (sc$$32.h1.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Common_Prelude_Eq$20Lib_Common_QName$2C_$3D$3D_(sc$$32.h1.h1, _$$3.h2)) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(true) ) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(true) ); } else { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("SKIP ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$3.h2))) + (" because unify error ")) + (Lib_Types_errorMsg($$sc1.h2))) + (""))), ( _ ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(false))); } })))))); const Lib_Elab_lookupDef = ( _$$0, _$$1 ) => (Lib_Elab_lookupDef_go(_$$0, _$$1, 0, _$$0.h2, _$$0.h1)); const Lib_Elab_lookupDef_go = ( _, _1, _$$3, _$$4, _$$5 ) => (bouncer(Lib_Elab_REC_lookupDef_go, { tag: 1, h0: _, h1: _1, h2: null, h3: _$$3, h4: _$$4, h5: _$$5 })); @@ -424,9 +426,9 @@ const Lib_Elab_extendPi = ( _$$0, _$$1, _$$2, _$$3 ) => { if ((_$$1.tag) == (5)) const Lib_Elab_MkBind = ( h0, h1, h2 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2 }); const Lib_Elab_fresh = ( ctx$$0, _$$1 ) => ((_$$1) + (("$") + (Prelude_showInt(Prelude_length$27(ctx$$0.h1))))); const Lib_Types_filterM = ( _$$1, _$$2 ) => (( (_$$2.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(_$$1(_$$2.h1), ( check ) => { switch (check) { case true: return Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Prelude__$3A$3A_(_$$2.h1, eta)), Lib_Types_filterM(_$$1, _$$2.h2)); case false: return Lib_Types_filterM(_$$1, _$$2.h2); } }) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nil()) )); -const Lib_Elab_getConstructors = ( _$$0, _$$1, _$$2 ) => (( (_$$2.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_getConstructors_lookupTCon(_$$0, _$$1, _$$2, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h1), ( $$sc ) => (Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_getConstructors_lookupTCon_lookupDCon(_$$0, _$$1, _$$2, _$$2.h0, _$$2.h1, _$$2.h2, eta)), $$sc))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_vprint(_$$0, _$$2), ( tms ) => (Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("Can't split - not VRef: ") + (tms)) + (""))), eta)))))) )); +const Lib_Elab_getConstructors = ( _$$0, _$$1, _$$2 ) => (( (_$$2.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_getConstructors_lookupTCon(_$$0, _$$1, _$$2, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h1), ( $$sc ) => (Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_lookupDCon(eta)), $$sc))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_vprint(_$$0, _$$2), ( tms ) => (Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("Can't split - not VRef: ") + (tms)) + (""))), eta)))))) )); const Lib_Elab_vprint = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(Prelude_length$27(_$$0.h1), _$$1), ( tm ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), _$$0.h2), tm))), Prelude_Lin()))))); -const Lib_Elab_getConstructors_lookupTCon_lookupDCon = ( _, _1, _2, _3, _4, _5, _$$8 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$10 = Lib_TopContext_lookup(_$$8, top); return ( (sc$$10.tag) == (1) ? Lib_Types_MkM(( _6 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_3, (("Internal Error: DCon ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$8))) + (" not found"))), eta)))) : ( (sc$$10.h1.h3.tag) == (2) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(sc$$10.h1.h1, Prelude__$2C_(Prelude_length$27(sc$$10.h1.h3.h2), sc$$10.h1.h2))) : Lib_Types_MkM(( _6 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_3, (("Internal Error: ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$8))) + (" is not a DCon"))), eta)))) ) ); })); +const Lib_Elab_lookupDCon = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$2 = Lib_TopContext_lookup(_$$0, top); return ( (sc$$2.tag) == (1) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("Internal Error: DCon ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (" not found"))), eta)))) : ( (sc$$2.h1.h3.tag) == (2) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(sc$$2.h1.h1, Prelude__$2C_(Prelude_length$27(sc$$2.h1.h3.h2), sc$$2.h1.h2))) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("Internal Error: ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (" is not a DCon"))), eta)))) ) ); })); const Lib_Elab_getConstructors_lookupTCon = ( _, _1, _2, _3, _4, _5, _$$7 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$9 = Lib_TopContext_lookup(_4, top); return ( (sc$$9.tag) == (0) ? ( (sc$$9.h1.h3.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(sc$$9.h1.h3.h1) : Lib_Types_MkM(( _6 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_1, (("Not a type constructor: ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_4))) + (""))), eta)))) ) : Lib_Types_MkM(( _6 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_1, (("Not a type constructor: ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_4))) + (""))), eta)))) ); })); const Lib_Elab_checkDone_rename = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _$$16 ) => { if ((_$$16.tag) == (1)) { const sc$$24 = (_$$16.h1.h2) == (_9); switch (sc$$24) { case true: return Prelude__$3A$3A_(Prelude__$2C_(_14, _$$16.h1.h3), _$$16.h2); case false: return Prelude__$3A$3A_(Prelude__$2C_(_$$16.h1.h2, _$$16.h1.h3), Lib_Elab_checkDone_rename(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _$$16.h2)); } } else { return Prelude_Nil(); } }; const Lib_Elab_checkDups = ( _$$0 ) => (( eta ) => (Lib_Elab_checkDups_go(_$$0, Prelude_Nil(), eta))); @@ -436,10 +438,9 @@ const Prelude_Prelude_Eq$20Prim_String$2C_$3D$3D_ = ( _$$0, _$$1 ) => ((_$$0) == const Prelude_Prelude_Eq$20Prim_String = Prelude_MkEq(( eta ) => (( eta1 ) => (Prelude_Prelude_Eq$20Prim_String$2C_$3D$3D_(eta, eta1)))); const Lib_Types_Prelude_Show$20Lib_Types_Constraint$2Cshow = ( _$$0 ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Prelude_Prelude_Show$20Prim_String, Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Pattern, Lib_Types_Prelude_Show$20Lib_Types_Val, eta))), Prelude__$2C_(_$$0.h0, Prelude__$2C_(_$$0.h1, _$$0.h2)))); const Lib_Types_Prelude_Show$20Lib_Types_Constraint = Prelude_MkShow(( eta ) => (Lib_Types_Prelude_Show$20Lib_Types_Constraint$2Cshow(eta))); -const Lib_Elab_buildDefault = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => { const defclauses = Prelude_filter(( eta ) => (Lib_Elab_isDefaultCase(_$$3, eta)), _$$1.h0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, (Prelude_length$27(defclauses)) == (0), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_buildDefault_applied(_$$0, _$$1, _$$2, _$$3, _$$4, eta)), _$$4), ( missing ) => (Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$2, (("missing cases: ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, missing))) + (""))), eta)))))))), ( _ ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_CaseDefault(eta)), Lib_Elab_buildTree(_$$0, Lib_Elab_MkProb(defclauses, _$$1.h1))))); }; -const Lib_Elab_buildDefault_applied = ( _, _1, _2, _3, _4, _$$6 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$9 = Lib_TopContext_lookup(_$$6, top); return ( (sc$$9.tag) == (0) ? ( (sc$$9.h1.h3.tag) == (2) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Elab_buildDefault_applied_go(_, _1, _2, _3, _4, _$$6, _$$6.h1, sc$$9.h1.h2)) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(_$$6.h1) ) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(_$$6.h1) ); })); -const Lib_Elab_buildDefault_applied_go = ( _, _1, _2, _3, _4, _5, _$$8, _$$9 ) => (bouncer(Lib_Elab_REC_buildDefault_applied_go, { tag: 1, h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: null, h6: _5, h7: null, h8: _$$8, h9: _$$9 })); -const Lib_Elab_REC_buildDefault_applied_go = ( arg ) => { if ((arg.h9.tag) == (6)) { switch (arg.h9.h2) { case 1: return { tag: 1, 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)) + (" ")) + (arg.h9.h1)) + (""), h9: arg.h9.h5 }; default: return { tag: 1, 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.h5 }; } } else { return { tag: 0, h0: arg.h8 }; } }; +const Lib_Elab_buildDefault = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => { const defclauses = Prelude_filter(( eta ) => (Lib_Elab_isDefaultCase(_$$3, eta)), _$$1.h0); return ( (defclauses.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_addInfo(Lib_Types_MissingCases(_$$2, _$$0, _$$4)), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_addError(Lib_Common_E(_$$2, (("missing cases: ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, _$$4))) + (""))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_freshMeta(_$$0, _$$2, _$$1.h1, 3), ( hole ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_CaseDefault(hole)))))))) : Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_CaseDefault(eta)), Lib_Elab_buildTree(_$$0, Lib_Elab_MkProb(defclauses, _$$1.h1))) ); }; +const Lib_TopContext_addError = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, tc.h6, tc.h7, Prelude__$3A$3A_(_$$0, tc.h8), tc.h9))))))); +const Lib_Types_MissingCases = ( h0, h1, h2 ) => ({ tag: 1, h0: h0, h1: h1, h2: h2 }); const Lib_Elab_isDefaultCase = ( _$$0, _$$1 ) => { const sc$$2 = Prelude_find(( _$$11 ) => ((_$$0) == (_$$11.h0)), _$$1.h1); if ((sc$$2.tag) == (1)) { return true; } else { switch (sc$$2.h1.h1.tag) { case 2: return true; case 0: return true; default: return false; } } }; const Prelude_find = ( _$$1, _$$2 ) => (bouncer(Prelude_REC_find, { tag: 1, h0: null, h1: _$$1, h2: _$$2 })); const Prelude_REC_find = ( arg ) => { if ((arg.h2.tag) == (1)) { const sc$$6 = arg.h1(arg.h2.h1); switch (sc$$6) { case true: return { tag: 0, h0: Prelude_Just(arg.h2.h1) }; case false: return { tag: 1, h0: null, h1: arg.h1, h2: arg.h2.h2 }; } } else { return { tag: 0, h0: Prelude_Nothing() }; } }; @@ -491,32 +492,35 @@ const Lib_Elab_litTyName = ( _$$0 ) => { switch (_$$0.tag) { case 3: return Lib_ const Lib_Elab_boolType = Lib_Common_QN(Lib_Common_primNS, "Bool"); const Lib_Elab_solveAutos_isAuto_run = ( _$$2 ) => (( (_$$2.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_trySolveAuto(_$$2.h1), ( res ) => { switch (res) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(true); case false: return Lib_Elab_solveAutos_isAuto_run(_$$2.h2); } }) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(false) )); const Lib_Elab_solveAutos_isAuto = ( _$$1 ) => { if ((_$$1.tag) == (0)) { switch (_$$1.h4) { case 2: return true; default: return false; } } else { return false; } }; -const Lib_Elab_solveAutos = Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const autos = Prelude_filter(( eta ) => (Lib_Elab_solveAutos_isAuto(eta)), Prelude_mapMaybe(( _$$5 ) => (Data_SortedMap_lookupMap$27(_$$5, top.h5.h0)), top.h5.h1)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_solveAutos_isAuto_run(autos), ( res ) => { switch (res) { case true: return Lib_Elab_solveAutos; case false: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } }); }); +const Lib_Elab_solveAutos = Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const autos = Prelude_filter(( eta ) => (Lib_Elab_solveAutos_isAuto(eta)), Prelude_mapMaybe(( _$$5 ) => (Data_SortedMap_lookupMap$27(_$$5, top.h6.h0)), top.h6.h1)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_solveAutos_isAuto_run(autos), ( res ) => { switch (res) { case true: return Lib_Elab_solveAutos; case false: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } }); }); const Lib_Elab_lookupName = ( _$$0, _$$1 ) => (Lib_Elab_lookupName_go(_$$0, _$$1, 0, _$$0.h2)); const Lib_Elab_lookupName_go = ( _, _1, _$$3, _$$4 ) => (bouncer(Lib_Elab_REC_lookupName_go, { tag: 1, h0: _, h1: _1, h2: null, h3: _$$3, h4: _$$4 })); const Lib_Elab_REC_lookupName_go = ( arg ) => { if ((arg.h4.tag) == (1)) { const sc$$12 = (arg.h4.h1.h2) == (arg.h1); switch (sc$$12) { case true: return { tag: 0, h0: Prelude_Just(Prelude__$2C_(Lib_Types_Bnd(Lib_Common_emptyFC, arg.h3), arg.h4.h1.h3)) }; case false: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: (1) + (arg.h3), h4: arg.h4.h2 }; } } else { return { tag: 0, h0: Prelude_Nothing() }; } }; const Lib_Elab_findSplit = ( _$$0 ) => (bouncer(Lib_Elab_REC_findSplit, { tag: 1, h0: _$$0 })); const Lib_Elab_REC_findSplit = ( arg ) => { if ((arg.h0.tag) == (1)) { switch (arg.h0.h1.h1.tag) { case 3: return { tag: 0, h0: Prelude_Just(arg.h0.h1) }; case 1: return { tag: 0, h0: Prelude_Just(arg.h0.h1) }; default: return { tag: 1, h0: arg.h0.h2 }; } } else { return { tag: 0, h0: Prelude_Nothing() }; } }; const Lib_Elab_introClause = ( _$$0, _$$1, _$$2, _$$3 ) => { if ((_$$3.h2.tag) == (1)) { const sc$$11 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(_$$1, Lib_Types_getIcit(_$$3.h2.h1)); switch (sc$$11) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_MkClause(_$$3.h0, Prelude__$3A$3A_(Lib_Types_PC(_$$0, _$$3.h2.h1, _$$2), _$$3.h1), _$$3.h2.h2, _$$3.h3)); case false: { const sc$$12 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(_$$1, 0); switch (sc$$12) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_MkClause(_$$3.h0, Prelude__$3A$3A_(Lib_Types_PC(_$$0, Lib_Types_PatWild(_$$3.h0, 0), _$$2), _$$3.h1), Prelude__$3A$3A_(_$$3.h2.h1, _$$3.h2.h2), _$$3.h3)); case false: { const sc$$13 = Lib_Types_Prelude_Eq$20Lib_Types_Icit$2C_$3D$3D_(_$$1, 2); switch (sc$$13) { case true: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_MkClause(_$$3.h0, Prelude__$3A$3A_(Lib_Types_PC(_$$0, Lib_Types_PatWild(_$$3.h0, 2), _$$2), _$$3.h1), Prelude__$3A$3A_(_$$3.h2.h1, _$$3.h2.h2), _$$3.h3)); case false: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$3.h0, (((((("Explicit arg and ") + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(Lib_Types_getIcit(_$$3.h2.h1)))) + (" pattern ")) + (_$$0)) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Pattern$2Cshow(_$$3.h2.h1))) + (""))), eta)))); } break; } } break; } } } else { switch (_$$1) { case 2: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_MkClause(_$$3.h0, Prelude__$3A$3A_(Lib_Types_PC(_$$0, Lib_Types_PatWild(_$$3.h0, 2), _$$2), _$$3.h1), Prelude_Nil(), _$$3.h3)); case 0: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_MkClause(_$$3.h0, Prelude__$3A$3A_(Lib_Types_PC(_$$0, Lib_Types_PatWild(_$$3.h0, 0), _$$2), _$$3.h1), Prelude_Nil(), _$$3.h3)); default: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$3.h0, "Clause size doesn't match")), eta)))); } } }; -const Lib_Elab_mkPat = ( _$$0 ) => (( (_$$0.h2.tag) == (14) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_mkPat(Prelude__$2C_(_$$0.h2.h2, _$$0.h3)), ( pat ) => (( (pat.tag) == (1) ? ( (pat.h4.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatCon(pat.h0, pat.h1, pat.h2, pat.h3, Prelude_Just(_$$0.h2.h1))) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(pat.h0, (("Double as pattern ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h2.h2))) + (""))), eta)))) ) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$0.h2.h0, (("Can't put as on non-constructor ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h2.h2))) + (""))), eta)))) ))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$6 = Lib_Elab_splitArgs(_$$0.h2, Prelude_Nil()); switch (sc$$6.h2.tag) { case 9: return ( (sc$$6.h3.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatWild(sc$$6.h2.h0, _$$0.h3)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$6.h2.h0, "implicit pat can't be applied to arguments")), eta)))) ); case 7: return ( (sc$$6.h3.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatLit(sc$$6.h2.h0, sc$$6.h2.h1)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$6.h2.h0, "lit cannot be applied to arguments")), eta)))) ); case 4: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatImpossible(sc$$6.h2.h0)); case 0: { const sc$$13 = Lib_TopContext_lookupRaw(sc$$6.h2.h1, top); return ( (sc$$13.tag) == (0) ? ( (sc$$13.h1.h3.tag) == (2) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_mkPat(eta)), sc$$6.h3), ( bpat ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatCon(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$0.h2), _$$0.h3, sc$$13.h1.h1, bpat, Prelude_Nothing())))) : ( (sc$$6.h3.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatVar(sc$$6.h2.h0, _$$0.h3, sc$$6.h2.h1)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$0.h2), "patvar applied to args")), eta)))) ) ) : ( (sc$$6.h3.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatVar(sc$$6.h2.h0, _$$0.h3, sc$$6.h2.h1)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$0.h2), "patvar applied to args")), eta)))) ) ); break; } default: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$6.h2), (("expected pat var or constructor, got ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$6.h2))) + (""))), eta)))); } }) )); +const Lib_Elab_mkPat = ( _$$0 ) => (( (_$$0.h2.tag) == (14) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_mkPat(Prelude__$2C_(_$$0.h2.h2, _$$0.h3)), ( pat ) => (( (pat.tag) == (1) ? ( (pat.h4.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatCon(pat.h0, pat.h1, pat.h2, pat.h3, Prelude_Just(_$$0.h2.h1))) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(pat.h0, (("Double as pattern ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h2.h2))) + (""))), eta)))) ) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$0.h2.h0, (("Can't put as on non-constructor ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h2.h2))) + (""))), eta)))) ))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$6 = Lib_Elab_splitArgs(_$$0.h2, Prelude_Nil()); switch (sc$$6.h2.tag) { case 9: return ( (sc$$6.h3.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatWild(sc$$6.h2.h0, _$$0.h3)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$6.h2.h0, "implicit pat can't be applied to arguments")), eta)))) ); case 7: return ( (sc$$6.h3.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatLit(sc$$6.h2.h0, sc$$6.h2.h1)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$6.h2.h0, "lit cannot be applied to arguments")), eta)))) ); case 4: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatImpossible(sc$$6.h2.h0)); case 0: { const sc$$13 = Lib_TopContext_lookupRaw(sc$$6.h2.h1, top); if ((sc$$13.tag) == (0)) { if ((sc$$13.h1.h3.tag) == (2)) { return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_mkPat(eta)), sc$$6.h3), ( bpat ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatCon(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$0.h2), _$$0.h3, sc$$13.h1.h1, bpat, Prelude_Nothing())))); } else { if ((sc$$6.h3.tag) == (0)) { const sc$$23 = Prelude_isUpper(Prelude_strIndex(sc$$6.h2.h1, 0)); switch (sc$$23) { case true: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$0.h2), (("") + (sc$$6.h2.h1)) + (" not in scope"))), eta)))); case false: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatVar(sc$$6.h2.h0, _$$0.h3, sc$$6.h2.h1)); } } else { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$0.h2), "patvar applied to args")), eta)))); } } } else { if ((sc$$6.h3.tag) == (0)) { const sc$$16 = Prelude_isUpper(Prelude_strIndex(sc$$6.h2.h1, 0)); switch (sc$$16) { case true: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$0.h2), (("") + (sc$$6.h2.h1)) + (" not in scope"))), eta)))); case false: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_PatVar(sc$$6.h2.h0, _$$0.h3, sc$$6.h2.h1)); } } else { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$0.h2), "patvar applied to args")), eta)))); } } break; } default: return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(sc$$6.h2), (("expected pat var or constructor, got ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(sc$$6.h2))) + (""))), eta)))); } }) )); +const Prelude_strIndex = (s, ix) => s[ix]; +const Prelude_isUpper = ( _$$0 ) => { const o = Prelude_ord(_$$0); return (Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, 64, o), 0)) && (Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, o, 91), 0)); }; const Lib_Types_PatCon = ( h0, h1, h2, h3, h4 ) => ({ tag: 1, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); const Lib_Types_PatImpossible = ( h0 ) => ({ tag: 4, h0: h0 }); const Lib_Types_PatLit = ( h0, h1 ) => ({ tag: 3, h0: h0, h1: h1 }); const Lib_Elab_splitArgs = ( _$$0, _$$1 ) => (bouncer(Lib_Elab_REC_splitArgs, { tag: 1, h0: _$$0, h1: _$$1 })); const Lib_Elab_REC_splitArgs = ( arg ) => (( (arg.h0.tag) == (2) ? { tag: 1, h0: arg.h0.h1, h1: Prelude__$3A$3A_(Prelude__$2C_(arg.h0.h2, arg.h0.h3), arg.h1) } : { tag: 0, h0: Prelude__$2C_(arg.h0, arg.h1) } )); -const Lib_Elab_undo = ( _$$0, _$$1 ) => { if ((_$$1.tag) == (1)) { switch (_$$1.h1.tag) { case 2: return ( (_$$1.h1.h1.tag) == (0) ? ( (_$$1.h1.h3.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$13 = Lib_TopContext_lookupRaw(_$$1.h1.h1.h1, top); return ( (sc$$13.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(_$$1.h1.h0, _$$1.h2), ( xs$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RApp(_$$1.h1.h0, Lib_Syntax_RApp(_$$1.h1.h0, Lib_Syntax_RVar(_$$1.h1.h0, "_>>=_"), _$$1.h1.h2, 1), Lib_Syntax_RLam(_$$1.h1.h0, Lib_Types_BI(_$$1.h1.h1.h0, _$$1.h1.h1.h1, 1, true), xs$27), 1)))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(_$$1.h1.h0, _$$1.h2), ( xs$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RCase(_$$1.h1.h0, Lib_Syntax_RVar(_$$1.h1.h0, "$sc"), Prelude_Nothing(), Prelude__$3A$3A_(Lib_Syntax_MkAlt(_$$1.h1.h1, Prelude_Just(xs$27)), Prelude_Nil()))), ( rest ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RApp(_$$1.h1.h0, Lib_Syntax_RApp(_$$1.h1.h0, Lib_Syntax_RVar(_$$1.h1.h0, "_>>=_"), _$$1.h1.h2, 1), Lib_Syntax_RLam(_$$1.h1.h0, Lib_Types_BI(_$$1.h1.h0, "$sc", 1, true), rest), 1)))))) ); }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(_$$1.h1.h0, _$$1.h2), ( xs$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RCase(_$$1.h1.h0, Lib_Syntax_RVar(_$$1.h1.h0, "$sc"), Prelude_Nothing(), Prelude__$3A$3A_(Lib_Syntax_MkAlt(_$$1.h1.h1, Prelude_Just(xs$27)), _$$1.h1.h3))), ( rest ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RApp(_$$1.h1.h0, Lib_Syntax_RApp(_$$1.h1.h0, Lib_Syntax_RVar(_$$1.h1.h0, "_>>=_"), _$$1.h1.h2, 1), Lib_Syntax_RLam(_$$1.h1.h0, Lib_Types_BI(_$$1.h1.h0, "$sc", 1, true), rest), 1)))))) ) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(_$$1.h1.h0, _$$1.h2), ( xs$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RCase(_$$1.h1.h0, Lib_Syntax_RVar(_$$1.h1.h0, "$sc"), Prelude_Nothing(), Prelude__$3A$3A_(Lib_Syntax_MkAlt(_$$1.h1.h1, Prelude_Just(xs$27)), _$$1.h1.h3))), ( rest ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RApp(_$$1.h1.h0, Lib_Syntax_RApp(_$$1.h1.h0, Lib_Syntax_RVar(_$$1.h1.h0, "_>>=_"), _$$1.h1.h2, 1), Lib_Syntax_RLam(_$$1.h1.h0, Lib_Types_BI(_$$1.h1.h0, "$sc", 1, true), rest), 1)))))) ); case 1: return Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Syntax_RLet(_$$1.h1.h0, _$$1.h1.h1, Lib_Syntax_RImplicit(_$$1.h1.h0), _$$1.h1.h2, eta)), Lib_Elab_undo(_$$1.h1.h0, _$$1.h2)); case 0: return ( (_$$1.h2.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(_$$1.h1.h1) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(_$$1.h1.h0, _$$1.h2), ( xs$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RApp(_$$1.h1.h0, Lib_Syntax_RApp(_$$1.h1.h0, Lib_Syntax_RVar(_$$1.h1.h0, "_>>=_"), _$$1.h1.h1, 1), Lib_Syntax_RLam(_$$1.h1.h0, Lib_Types_BI(_$$1.h1.h0, "_", 1, true), xs$27), 1)))) ); } } else { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$0, "do block must end in expression")), eta)))); } }; +const Lib_Elab_undo = ( _$$0 ) => { if ((_$$0.tag) == (1)) { switch (_$$0.h1.tag) { case 2: return ( (_$$0.h2.tag) == (0) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_DoStmt$2CgetFC(_$$0.h1), "do block must end in expression")), eta)))) : ( (_$$0.h1.h1.tag) == (0) ? ( (_$$0.h1.h3.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$12 = Lib_TopContext_lookupRaw(_$$0.h1.h1.h1, top); return ( (sc$$12.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(_$$0.h2), ( xs$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RApp(_$$0.h1.h0, Lib_Syntax_RApp(_$$0.h1.h0, Lib_Syntax_RVar(_$$0.h1.h0, "_>>=_"), _$$0.h1.h2, 1), Lib_Syntax_RLam(_$$0.h1.h0, Lib_Types_BI(_$$0.h1.h1.h0, _$$0.h1.h1.h1, 1, true), xs$27), 1)))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(_$$0.h2), ( xs$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RCase(_$$0.h1.h0, Lib_Syntax_RVar(_$$0.h1.h0, "$sc"), Prelude_Nothing(), Prelude__$3A$3A_(Lib_Syntax_MkAlt(_$$0.h1.h1, Prelude_Just(xs$27)), Prelude_Nil()))), ( rest ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RApp(_$$0.h1.h0, Lib_Syntax_RApp(_$$0.h1.h0, Lib_Syntax_RVar(_$$0.h1.h0, "_>>=_"), _$$0.h1.h2, 1), Lib_Syntax_RLam(_$$0.h1.h0, Lib_Types_BI(_$$0.h1.h0, "$sc", 1, true), rest), 1)))))) ); }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(_$$0.h2), ( xs$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RCase(_$$0.h1.h0, Lib_Syntax_RVar(_$$0.h1.h0, "$sc"), Prelude_Nothing(), Prelude__$3A$3A_(Lib_Syntax_MkAlt(_$$0.h1.h1, Prelude_Just(xs$27)), _$$0.h1.h3))), ( rest ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RApp(_$$0.h1.h0, Lib_Syntax_RApp(_$$0.h1.h0, Lib_Syntax_RVar(_$$0.h1.h0, "_>>=_"), _$$0.h1.h2, 1), Lib_Syntax_RLam(_$$0.h1.h0, Lib_Types_BI(_$$0.h1.h0, "$sc", 1, true), rest), 1)))))) ) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(_$$0.h2), ( xs$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RCase(_$$0.h1.h0, Lib_Syntax_RVar(_$$0.h1.h0, "$sc"), Prelude_Nothing(), Prelude__$3A$3A_(Lib_Syntax_MkAlt(_$$0.h1.h1, Prelude_Just(xs$27)), _$$0.h1.h3))), ( rest ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RApp(_$$0.h1.h0, Lib_Syntax_RApp(_$$0.h1.h0, Lib_Syntax_RVar(_$$0.h1.h0, "_>>=_"), _$$0.h1.h2, 1), Lib_Syntax_RLam(_$$0.h1.h0, Lib_Types_BI(_$$0.h1.h0, "$sc", 1, true), rest), 1)))))) ) ); case 1: return ( (_$$0.h2.tag) == (0) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_DoStmt$2CgetFC(_$$0.h1), "do block must end in expression")), eta)))) : Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Syntax_RLet(_$$0.h1.h0, _$$0.h1.h1, Lib_Syntax_RImplicit(_$$0.h1.h0), _$$0.h1.h2, eta)), Lib_Elab_undo(_$$0.h2)) ); case 0: return ( (_$$0.h2.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(_$$0.h1.h1) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_undo(_$$0.h2), ( xs$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_RApp(_$$0.h1.h0, Lib_Syntax_RApp(_$$0.h1.h0, Lib_Syntax_RVar(_$$0.h1.h0, "bind"), _$$0.h1.h1, 1), Lib_Syntax_RLam(_$$0.h1.h0, Lib_Types_BI(_$$0.h1.h0, "_", 1, true), xs$27), 1)))) ); } } else { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, "do block must end in expression")), eta)))); } }; const Lib_Types_BI = ( h0, h1, h2, h3 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3 }); const Lib_Syntax_RLam = ( h0, h1, h2 ) => ({ tag: 1, h0: h0, h1: h1, h2: h2 }); const Lib_Syntax_RApp = ( h0, h1, h2, h3 ) => ({ tag: 2, h0: h0, h1: h1, h2: h2, h3: h3 }); const Lib_Syntax_RImplicit = ( h0 ) => ({ tag: 9, h0: h0 }); const Lib_Syntax_RLet = ( h0, h1, h2, h3, h4 ) => ({ tag: 6, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); +const Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_DoStmt$2CgetFC = ( _$$0 ) => { switch (_$$0.tag) { case 2: return _$$0.h0; case 1: return _$$0.h0; case 0: return _$$0.h0; } }; const Lib_Syntax_MkAlt = ( h0, h1 ) => ({ tag: 0, h0: h0, h1: h1 }); const Lib_Syntax_RCase = ( h0, h1, h2, h3 ) => ({ tag: 8, h0: h0, h1: h1, h2: h2, h3: h3 }); const Lib_Elab_collectDecl = ( _$$0 ) => (bouncer(Lib_Elab_REC_collectDecl, { tag: 1, h0: _$$0 })); const Lib_Elab_REC_collectDecl = ( arg ) => { if ((arg.h0.tag) == (1)) { if ((arg.h0.h1.tag) == (1)) { if ((arg.h0.h2.tag) == (1)) { if ((arg.h0.h2.h1.tag) == (1)) { const sc$$13 = (arg.h0.h1.h1) == (arg.h0.h2.h1.h1); switch (sc$$13) { case true: return { tag: 1, h0: Prelude__$3A$3A_(Lib_Syntax_FunDef(arg.h0.h1.h0, arg.h0.h1.h1, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(arg.h0.h1.h2, arg.h0.h2.h1.h2)), arg.h0.h2.h2) }; case false: return { tag: 0, h0: Prelude__$3A$3A_(Lib_Syntax_FunDef(arg.h0.h1.h0, arg.h0.h1.h1, arg.h0.h1.h2), Lib_Elab_collectDecl(arg.h0.h2)) }; } } else { return { tag: 0, h0: Prelude__$3A$3A_(arg.h0.h1, Lib_Elab_collectDecl(arg.h0.h2)) }; } } else { return { tag: 0, h0: Prelude__$3A$3A_(arg.h0.h1, Lib_Elab_collectDecl(arg.h0.h2)) }; } } else { return { tag: 0, h0: Prelude__$3A$3A_(arg.h0.h1, Lib_Elab_collectDecl(arg.h0.h2)) }; } } else { return { tag: 0, h0: Prelude_Nil() }; } }; const Lib_Syntax_FunDef = ( h0, h1, h2 ) => ({ tag: 1, h0: h0, h1: h1, h2: h2 }); const Lib_Elab_checkWhere = ( _$$0, _$$1, _$$2, _$$3 ) => (( (_$$1.tag) == (1) ? ( (_$$1.h1.tag) == (0) ? ( (_$$1.h1.h1.tag) == (1) ? ( (_$$1.h1.h1.h2.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(_$$0, _$$1.h1.h2, Lib_Types_VU(_$$1.h1.h0)), ( funTy ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((("where clause ") + (_$$1.h1.h1.h1)) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h2), _$$0.h2), funTy))), Prelude_Lin()))) + (""))), ( _ ) => (( (_$$1.h2.tag) == (1) ? ( (_$$1.h2.h1.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_not((_$$1.h1.h1.h1) == (_$$1.h2.h1.h1)), ( _1 ) => (Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h2.h1.h0, (("Expected def for ") + (_$$1.h1.h1.h1)) + (""))), eta)))))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_makeClause(eta)), _$$1.h2.h1.h2), ( clauses$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$0.h1, funTy), ( vty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((((("") + (_$$1.h1.h1.h1)) + (" vty is ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(vty))) + (""))), ( _2 ) => { const ctx$27 = Lib_Types_extend(_$$0, _$$1.h1.h1.h1, vty); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildTree(Lib_Types_MkCtx(ctx$27.h0, ctx$27.h1, ctx$27.h2, ctx$27.h3, _$$1.h2.h1.h0), Lib_Elab_MkProb(clauses$27, vty)), ( tm ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(ctx$27.h1, tm), ( vtm ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_checkWhere(ctx$27, _$$1.h2.h2, _$$2, _$$3), ( ty$27 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Types_LetRec(_$$1.h1.h0, _$$1.h1.h1.h1, funTy, tm, ty$27)))))))); }))))))))) : Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl$2CgetFC(_$$1.h2.h1), "expected function definition")), eta)))) ) : Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1.h1.h0, "expected function definition after this signature")), eta)))) ))))) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl$2CgetFC(_$$1.h1), "expected type signature")), eta)))) ) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl$2CgetFC(_$$1.h1), "expected type signature")), eta)))) ) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl$2CgetFC(_$$1.h1), "expected type signature")), eta)))) ) : Lib_Elab_check(_$$0, _$$2, _$$3) )); -const Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl$2CgetFC = ( _$$0 ) => { switch (_$$0.tag) { case 10: return _$$0.h0; case 9: return _$$0.h0; case 8: return _$$0.h0; case 7: return _$$0.h0; case 6: return _$$0.h0; case 5: return _$$0.h0; case 4: return _$$0.h0; case 3: return _$$0.h0; case 2: return _$$0.h0; case 1: return _$$0.h0; case 0: return _$$0.h0; } }; +const Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Decl$2CgetFC = ( _$$0 ) => { switch (_$$0.tag) { case 11: return _$$0.h0; case 10: return _$$0.h0; case 9: return _$$0.h0; case 8: return _$$0.h0; case 7: return _$$0.h0; case 6: return _$$0.h0; case 5: return _$$0.h0; case 4: return _$$0.h0; case 3: return _$$0.h0; case 2: return _$$0.h0; case 1: return _$$0.h0; case 0: return _$$0.h0; } }; const Lib_Elab_makeClause = ( _$$0 ) => { const sc$$5 = Lib_Elab_splitArgs(_$$0.h2, Prelude_Nil()); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_mkPat(eta)), sc$$5.h3), ( pats ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Syntax_MkClause(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$0.h2), Prelude_Nil(), pats, _$$0.h3)))); }; const Lib_Elab_updateRec = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_updateRec_app_doClause_collect_getTele(_$$0, _$$1, _$$2, _$$3, _$$4, _$$3, _$$4), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_foldlM(Lib_Types_Prelude_Monad$20Lib_Types_M, ( eta ) => (( eta1 ) => (Lib_Elab_updateRec_app_doClause(_$$0, _$$1, _$$2, _$$3, _$$4, eta, eta1))), $$sc.h3, _$$2), ( args$27 ) => { const tm = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( acc ) => (( tm ) => (Lib_Syntax_RApp(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(tm), acc, tm, 1))), Lib_Syntax_RVar(_$$1, $$sc.h2.h1), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h3), args$27)); const tm1 = ( (_$$3.tag) == (1) ? Lib_Syntax_RLam(_$$1, Lib_Types_BI(_$$1, "$ru", 1, true), tm) : tm ); return Lib_Elab_check(_$$0, tm1, _$$4); })))); const Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl = ( _$$2, _$$3, _$$4 ) => (bouncer(Prelude_REC_Prelude_Foldable$20Prelude_List$2Cfoldl, { tag: 1, h0: null, h1: null, h2: _$$2, h3: _$$3, h4: _$$4 })); @@ -533,14 +537,14 @@ const Prelude_pure = ( _$$1 ) => (( a ) => (_$$1.h2(null))); const Prelude_bind = ( _$$1 ) => (( a ) => (( b ) => (_$$1.h1(null)(null)))); const Lib_Elab_updateRec_app_doClause_collect_getTele = ( _, _1, _2, _3, _4, _$$9, _$$10 ) => { switch (_$$10.tag) { case 5: return ( (_$$9.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_forceType(_.h1, _$$10.h4), ( a ) => (Lib_Elab_updateRec_app_doClause_collect_getTele(_, _1, _2, _3, _4, Prelude_Just(Lib_Syntax_RVar(_1, "$ru")), a))) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$9.h1), (("Expected a record type, got ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$10))) + (""))), eta)))) ); case 1: return ( (_$$9.tag) == (1) ? Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_1, (("Expected a pi type, got ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$10))) + (""))), eta)))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$17 = Lib_TopContext_lookup(_$$10.h1, top); if ((sc$$17.tag) == (0)) { if ((sc$$17.h1.h3.tag) == (1)) { if ((sc$$17.h1.h3.h1.tag) == (1)) { if ((sc$$17.h1.h3.h1.h2.tag) == (0)) { const sc$$31 = Lib_TopContext_lookup(sc$$17.h1.h3.h1.h1, top); return ( (sc$$31.tag) == (0) ? ( (sc$$31.h1.h3.tag) == (2) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(sc$$17.h1.h3.h1.h1, Lib_Elab_updateRec_app_doClause_collect(_, _1, _2, _3, _4, _$$9.h1, sc$$31.h1.h2))) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$10.h0, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$17.h1.h3.h1.h1))) + (" not a dcon"))), eta)))) ) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$10.h0, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$17.h1.h3.h1.h1))) + (" not a dcon"))), eta)))) ); } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$10.h0, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$10.h1))) + (" is not a record"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$10.h0, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$10.h1))) + (" is not a record"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$10.h0, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$10.h1))) + (" is not a record"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$10.h0, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$10.h1))) + (" not in scope"))), eta)))); } }) ); default: return ( (_$$9.tag) == (1) ? Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_1, (("Expected a pi type, got ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$10))) + (""))), eta)))) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$9.h1), (("Expected a record type, got ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$10))) + (""))), eta)))) ); } }; const Lib_Elab_updateRec_app_doClause_collect = ( _, _1, _2, _3, _4, _$$8, _$$9 ) => (( (_$$9.tag) == (6) ? Prelude__$3A$3A_(Prelude__$2C_(_$$9.h1, Lib_Syntax_RApp(_1, Lib_Syntax_RVar(_1, (".") + (_$$9.h1)), _$$8, 1)), Lib_Elab_updateRec_app_doClause_collect(_, _1, _2, _3, _4, _$$8, _$$9.h5)) : Prelude_Nil() )); -const Lib_ProcessDecl_checkAlreadyDef = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$3 = Lib_TopContext_lookup(Lib_Common_QN(top.h3, _$$1), top); return ( (sc$$3.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$0, (((("") + (_$$1)) + (" is already defined at ")) + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(sc$$3.h1.h0))) + (""))), eta)))) ); })); -const Lib_ProcessDecl_processDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _1 ) => ((("Def ") + (_$$2)) + (""))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$8 = Lib_TopContext_lookup(Lib_Common_QN(_$$0, _$$2), top); return ( (sc$$8.tag) == (1) ? Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("No declaration for ") + (_$$2)) + (""))), eta)))) : ( (sc$$8.h1.h3.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _2 ) => ((((("check ") + (_$$2)) + (" at ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$8.h1.h2))), Prelude_Lin()))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), sc$$8.h1.h2), ( vty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _3 ) => ((((("") + (_$$2)) + (" vty is ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(vty))) + (""))), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_makeClause(eta)), _$$3), ( clauses$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildTree(Lib_Types_MkCtx(0, Prelude_Nil(), Prelude_Nil(), Prelude_Nil(), sc$$8.h1.h0), Lib_Elab_MkProb(clauses$27, vty)), ( tm ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_solveAutos, ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Erasure_erase(Prelude_Nil(), tm, Prelude_Nil()), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((((((("Add def ") + (_$$2)) + (" ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), tm))), Prelude_Lin()))) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$8.h1.h2))), Prelude_Lin()))) + (""))), ( _5 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$2), sc$$8.h1.h0, sc$$8.h1.h2, Lib_Types_Fn(tm)), ( _6 ) => { const name = Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(Lib_Common_QN(_$$0, _$$2)); const sc$$28 = (Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, Lib_ProcessDecl_complexity(tm), 15), 0)) || (((name) == ("Prelude.Prelude.Monad Prelude.IO,bind")) || ((name) == ("Prelude._>>=_"))); switch (sc$$28) { case true: return Lib_TopContext_setFlag(Lib_Common_QN(_$$0, _$$2), sc$$8.h1.h0, true); case false: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } }))))))))))))))))) : Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (((("") + (_$$2)) + (" already defined at ")) + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(sc$$8.h1.h0))) + (""))), eta)))) ) ); })))))); -const Lib_TopContext_setFlag = ( _$$0, _$$1, _$$2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$4 = Data_SortedMap_lookupMap$27(_$$0, top.h4); return ( (sc$$4.tag) == (1) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (" not declared"))), eta)))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, Data_SortedMap_updateMap(_$$0, Lib_Types_MkEntry(sc$$4.h1.h0, _$$0, sc$$4.h1.h2, sc$$4.h1.h3, Prelude__$3A$3A_(_$$2, sc$$4.h1.h4)), tc.h4), tc.h5, tc.h6, tc.h7, tc.h8)))) ); })); +const Lib_ProcessDecl_checkAlreadyDef = ( _$$0, _$$1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$3 = Lib_TopContext_lookup(Lib_Common_QN(top.h4, _$$1), top); return ( (sc$$3.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$0, (((("") + (_$$1)) + (" is already defined at ")) + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(sc$$3.h1.h0))) + (""))), eta)))) ); })); +const Lib_ProcessDecl_processDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _1 ) => ((("Def ") + (_$$2)) + (""))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$8 = Lib_TopContext_lookup(Lib_Common_QN(_$$0, _$$2), top); return ( (sc$$8.tag) == (1) ? Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("No declaration for ") + (_$$2)) + (""))), eta)))) : ( (sc$$8.h1.h3.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _2 ) => ((((("check ") + (_$$2)) + (" at ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$8.h1.h2))), Prelude_Lin()))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), sc$$8.h1.h2), ( vty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _3 ) => ((((("") + (_$$2)) + (" vty is ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(vty))) + (""))), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Elab_makeClause(eta)), _$$3), ( clauses$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_buildTree(Lib_Types_MkCtx(0, Prelude_Nil(), Prelude_Nil(), Prelude_Nil(), sc$$8.h1.h0), Lib_Elab_MkProb(clauses$27, vty)), ( tm ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_solveAutos, ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Erasure_erase(Prelude_Nil(), tm, Prelude_Nil()), ( $$sc ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((((((("Add def ") + (_$$2)) + (" ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), tm))), Prelude_Lin()))) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$8.h1.h2))), Prelude_Lin()))) + (""))), ( _5 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_updateDef(Lib_Common_QN(_$$0, _$$2), sc$$8.h1.h0, sc$$8.h1.h2, Lib_Types_Fn(tm)), ( _6 ) => { const name = Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(Lib_Common_QN(_$$0, _$$2)); const sc$$28 = (Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, Lib_ProcessDecl_complexity(tm), 15), 0)) || (((name) == ("Prelude.Prelude.Monad Prelude.IO,bind")) || ((name) == ("Prelude._>>=_"))); switch (sc$$28) { case true: return Lib_TopContext_setFlag(Lib_Common_QN(_$$0, _$$2), sc$$8.h1.h0, 1); case false: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } }))))))))))))))))) : Lib_Types_MkM(( _2 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (((("") + (_$$2)) + (" already defined at ")) + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(sc$$8.h1.h0))) + (""))), eta)))) ) ); })))))); +const Lib_TopContext_setFlag = ( _$$0, _$$1, _$$2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$4 = Data_SortedMap_lookupMap$27(_$$0, top.h5); return ( (sc$$4.tag) == (1) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (" not declared"))), eta)))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, Data_SortedMap_updateMap(_$$0, Lib_Types_MkEntry(sc$$4.h1.h0, _$$0, sc$$4.h1.h2, sc$$4.h1.h3, Prelude__$3A$3A_(_$$2, sc$$4.h1.h4)), tc.h5), tc.h6, tc.h7, tc.h8, tc.h9)))) ); })); const Lib_ProcessDecl_complexity = ( _$$0 ) => { switch (_$$0.tag) { case 10: return 0; case 7: return ( (_$$0.h2.tag) == (1) ? ( (_$$0.h2.h1.tag) == (1) ? ( (_$$0.h2.h2.tag) == (0) ? ((1) + (Lib_ProcessDecl_complexity(_$$0.h1))) + (Lib_ProcessDecl_complexity(_$$0.h2.h1.h2)) : 100 ) : 100 ) : 100 ); case 5: return 0; case 4: return Lib_ProcessDecl_complexity_go(_$$0, _$$0.h0, _$$0.h1, _$$0.h2, _$$0.h1, Lib_ProcessDecl_complexity(_$$0.h2)); case 3: return (1) + (Lib_ProcessDecl_complexity(_$$0.h4)); case 2: return 1; case 1: return 1; case 0: return 1; default: return 100; } }; const Lib_ProcessDecl_complexity_go = ( _, _1, _2, _3, _$$5, _$$6 ) => (bouncer(Lib_ProcessDecl_REC_complexity_go, { tag: 1, h0: _, h1: _1, h2: _2, h3: _3, h4: null, h5: _$$5, h6: _$$6 })); const Lib_ProcessDecl_REC_complexity_go = ( arg ) => { switch (arg.h5.tag) { case 4: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5.h1, h6: (arg.h6) + (Lib_ProcessDecl_complexity(arg.h5.h2)) }; case 2: return { tag: 0, h0: 1 }; default: return { tag: 0, h0: (arg.h6) + (Lib_ProcessDecl_complexity(arg.h5)) }; } }; const Lib_Types_Fn = ( h0 ) => ({ tag: 3, h0: h0 }); -const Lib_TopContext_updateDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$5 = Data_SortedMap_lookupMap$27(_$$0, top.h4); return ( (sc$$5.tag) == (1) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (" not declared"))), eta)))) : Lib_Types_putTop(Lib_Types_MkTop(top.h0, top.h1, top.h2, top.h3, Data_SortedMap_updateMap(_$$0, Lib_Types_MkEntry(sc$$5.h1.h0, _$$0, _$$2, _$$3, sc$$5.h1.h4), top.h4), top.h5, top.h6, top.h7, top.h8)) ); })); +const Lib_TopContext_updateDef = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$5 = Data_SortedMap_lookupMap$27(_$$0, top.h5); return ( (sc$$5.tag) == (1) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (" not declared"))), eta)))) : Lib_Types_putTop(Lib_Types_MkTop(top.h0, top.h1, top.h2, top.h3, top.h4, Data_SortedMap_updateMap(_$$0, Lib_Types_MkEntry(sc$$5.h1.h0, _$$0, _$$2, _$$3, sc$$5.h1.h4), top.h5), top.h6, top.h7, top.h8, top.h9)) ); })); const Lib_Erasure_erase = ( _$$0, _$$1, _$$2 ) => (bouncer(Lib_Erasure_REC_erase, { tag: 1, h0: _$$0, h1: _$$1, h2: _$$2 })); const Lib_Erasure_REC_erase = ( arg ) => { switch (arg.h1.tag) { case 11: return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(arg.h1.h0, "erased value in relevant context")), eta)))) }; case 10: return { tag: 0, h0: Lib_Erasure_eraseSpine(arg.h0, arg.h1, arg.h2, Prelude_Nothing()) }; case 9: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Erasure_erase(Prelude__$3A$3A_(Prelude__$2C_(arg.h1.h1, Prelude__$2C_(true, Prelude_Just(arg.h1.h2))), arg.h0), arg.h1.h3, Prelude_Nil()), ( u$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Erasure_erase(Prelude__$3A$3A_(Prelude__$2C_(arg.h1.h1, Prelude__$2C_(true, Prelude_Just(arg.h1.h2))), arg.h0), arg.h1.h4, Prelude_Nil()), ( v$27 ) => (Lib_Erasure_eraseSpine(arg.h0, Lib_Types_LetRec(arg.h1.h0, arg.h1.h1, arg.h1.h2, u$27, v$27), arg.h2, Prelude_Nothing()))))) }; case 8: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Erasure_erase(arg.h0, arg.h1.h2, Prelude_Nil()), ( u$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Erasure_erase(Prelude__$3A$3A_(Prelude__$2C_(arg.h1.h1, Prelude__$2C_(true, Prelude_Nothing())), arg.h0), arg.h1.h3, Prelude_Nil()), ( v$27 ) => (Lib_Erasure_eraseSpine(arg.h0, Lib_Types_Let(arg.h1.h0, arg.h1.h1, u$27, v$27), arg.h2, Prelude_Nothing()))))) }; case 7: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Erasure_erase(arg.h0, arg.h1.h1, Prelude_Nil()), ( u$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Erasure_doAlt(arg.h0, eta)), arg.h1.h2), ( alts$27 ) => (Lib_Erasure_eraseSpine(arg.h0, Lib_Types_Case(arg.h1.h0, u$27, alts$27), arg.h2, Prelude_Nothing()))))) }; case 6: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Erasure_erase(arg.h0, arg.h1.h4, Prelude_Nil()), ( u$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Erasure_erase(Prelude__$3A$3A_(Prelude__$2C_(arg.h1.h1, Prelude__$2C_(true, Prelude_Just(arg.h1.h4))), arg.h0), arg.h1.h5, Prelude_Nil()), ( v$27 ) => (Lib_Erasure_eraseSpine(arg.h0, Lib_Types_Pi(arg.h1.h0, arg.h1.h1, arg.h1.h2, arg.h1.h3, u$27, v$27), arg.h2, Prelude_Just(Lib_Types_UU(Lib_Common_emptyFC))))))) }; case 5: return { tag: 0, h0: Lib_Erasure_eraseSpine(arg.h0, arg.h1, arg.h2, Prelude_Just(Lib_Types_UU(arg.h1.h0))) }; case 4: return { tag: 1, h0: arg.h0, h1: arg.h1.h1, h2: Prelude__$3A$3A_(Prelude__$2C_(arg.h1.h0, arg.h1.h2), arg.h2) }; case 3: return { tag: 0, h0: Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_Lam(arg.h1.h0, arg.h1.h1, arg.h1.h2, arg.h1.h3, eta)), Lib_Erasure_erase(Prelude__$3A$3A_(Prelude__$2C_(arg.h1.h1, Prelude__$2C_(arg.h1.h3, Prelude_Nothing())), arg.h0), arg.h1.h4, Prelude_Nil())) }; case 2: return { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(arg.h1) }; case 1: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$7 = Lib_TopContext_lookup(arg.h1.h1, top); return ( (sc$$7.tag) == (1) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(arg.h1.h0, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(arg.h1.h1))) + (" not in scope"))), eta)))) : Lib_Erasure_eraseSpine(arg.h0, arg.h1, arg.h2, Prelude_Just(sc$$7.h1.h2)) ); }) }; case 0: { const sc$$6 = Prelude_getAt(Prelude_intToNat(arg.h1.h1), arg.h0); if ((sc$$6.tag) == (1)) { return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(arg.h1.h0, (("bad index ") + (Prelude_showInt(arg.h1.h1))) + (""))), eta)))) }; } else { switch (sc$$6.h1.h3.h2) { case true: return { tag: 0, h0: Lib_Erasure_eraseSpine(arg.h0, arg.h1, arg.h2, sc$$6.h1.h3.h3) }; case false: return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(arg.h1.h0, (("used erased value ") + (sc$$6.h1.h2)) + (" (FIXME FC may be wrong here)"))), eta)))) }; } } break; } } }; const Lib_Erasure_eraseSpine = ( _$$0, _$$1, _$$2, ty$$3 ) => (bouncer(Lib_Erasure_REC_eraseSpine, { tag: 1, h0: _$$0, h1: _$$1, h2: _$$2, h3: ty$$3 })); @@ -570,7 +574,7 @@ const Lib_Util_REC_funArgs_go = ( arg ) => (( (arg.h2.tag) == (4) ? { tag: 1, h const Lib_ProcessDecl_processData_makeConEntry_binderName = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _$$11 ) => (_$$11.h1); const Prelude_Prelude_Monad$20Prelude_List$2Cbind = ( _$$2, _$$3 ) => (( (_$$2.tag) == (1) ? Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(_$$3(_$$2.h1), Prelude_Prelude_Monad$20Prelude_List$2Cbind(_$$2.h2, _$$3)) : Prelude_Nil() )); const Lib_ProcessDecl_processShortData = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processShortData_mkPi_getArgs(_$$0, _$$1, _$$2, _$$3, _$$2, Prelude_Nil()), ( $$sc ) => { const ty = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldr(( eta ) => (( eta1 ) => (Lib_ProcessDecl_processShortData_mkPi(_$$0, _$$1, _$$2, _$$3, eta, eta1))), Lib_Syntax_RU(_$$1), $$sc.h3.h3); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_ProcessDecl_processShortData_mkPi_getArgs_mkDecl(_$$0, _$$1, _$$2, _$$3, $$sc.h3.h3, Prelude_Nil(), eta)), _$$3), ( cons ) => { const dataDecl = Lib_Syntax_Data(_$$1, Prelude__$2C_($$sc.h2, $$sc.h3.h2), ty, Prelude_Just(cons)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ("SHORTDATA")), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _1 ) => ((("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(dataDecl))), Prelude_Lin()))) + (""))), ( _1 ) => (Lib_ProcessDecl_processDecl(_$$0, dataDecl))))); }); })); -const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty = ( _$$0 ) => { switch (_$$0.tag) { case 10: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("record"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1.h3))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_prettyBind(eta)), _$$0.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Text("where"), Lib_Prettier_Seq(Lib_Prettier_line, Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier__$3C$2F$3E_(eta, eta1))), Prelude__$3A$3A_(Prelude_maybe(Lib_Prettier_empty, ( nm$27 ) => (Lib_Prettier_Seq(Lib_Prettier_Text("constructor"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(nm$27.h3)))), _$$0.h3), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(eta)), _$$0.h4)))))))); case 9: return Lib_Prettier_Text("TODO pretty Instance"); case 8: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("class"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1.h3))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_prettyBind(eta)), _$$0.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Text("where"), Lib_Prettier_Seq(Lib_Prettier_line, Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier__$3C$2F$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(eta)), _$$0.h3))))))); case 7: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text(Lib_Common_Prelude_Show$20Lib_Common_Fixity$2Cshow(_$$0.h3)), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(Prelude_showInt(_$$0.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Prettier_text, _$$0.h1)))); case 6: return ( (_$$0.h2.tag) == (0) ? Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("pfunc"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h3), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":="))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Prettier_Text(_$$0.h4)))))) : Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("pfunc"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("uses"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Prettier_text, _$$0.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h3), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":="))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Prettier_Text(_$$0.h4)))))) ); case 5: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("ptype"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Prelude_maybe(Lib_Prettier_empty, ( ty ) => (Lib_Prettier_Seq(Lib_Prettier_Text(":"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(ty)))), _$$0.h2))); case 4: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("data"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("="))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( a ) => (( b ) => (Lib_Prettier_Seq(a, Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Prettier_Seq(Lib_Prettier_Text("|"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), b)))))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty, _$$0.h2)))); case 3: return ( (_$$0.h3.tag) == (1) ? Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("data"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1.h3))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h2))) : Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("data"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1.h3))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h2))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Text("where"), Lib_Prettier_Seq(Lib_Prettier_line, Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier__$3C$2F$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(eta)), _$$0.h3.h1))))))) ); case 2: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("#check"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h2))); case 1: return Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier__$3C$2F$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty_prettyPair(_$$0, _$$0.h0, _$$0.h1, _$$0.h2, eta)), _$$0.h2)); case 0: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Prettier_text, _$$0.h1)), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h2)))); } }; +const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty = ( _$$0 ) => { switch (_$$0.tag) { case 11: return Lib_Prettier_Seq(Lib_Prettier_Text("#export"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$5 ) => (Lib_Prettier_Text(_$$5.h3)), _$$0.h1)))); case 10: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("record"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1.h3))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_prettyBind(eta)), _$$0.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Text("where"), Lib_Prettier_Seq(Lib_Prettier_line, Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier__$3C$2F$3E_(eta, eta1))), Prelude__$3A$3A_(Prelude_maybe(Lib_Prettier_empty, ( nm$27 ) => (Lib_Prettier_Seq(Lib_Prettier_Text("constructor"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(nm$27.h3)))), _$$0.h3), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(eta)), _$$0.h4)))))))); case 9: return Lib_Prettier_Text("TODO pretty Instance"); case 8: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("class"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1.h3))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_prettyBind(eta)), _$$0.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Text("where"), Lib_Prettier_Seq(Lib_Prettier_line, Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier__$3C$2F$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(eta)), _$$0.h3))))))); case 7: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text(Lib_Common_Prelude_Show$20Lib_Common_Fixity$2Cshow(_$$0.h3)), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(Prelude_showInt(_$$0.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Prettier_text, _$$0.h1)))); case 6: return ( (_$$0.h2.tag) == (0) ? Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("pfunc"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h3), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":="))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Prettier_Text(_$$0.h4)))))) : Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("pfunc"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("uses"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Prettier_text, _$$0.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h3), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":="))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Prettier_Text(_$$0.h4)))))) ); case 5: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("ptype"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Prelude_maybe(Lib_Prettier_empty, ( ty ) => (Lib_Prettier_Seq(Lib_Prettier_Text(":"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(ty)))), _$$0.h2))); case 4: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("data"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("="))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_folddoc(( a ) => (( b ) => (Lib_Prettier_Seq(a, Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Prettier_Seq(Lib_Prettier_Text("|"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), b)))))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty, _$$0.h2)))); case 3: return ( (_$$0.h3.tag) == (1) ? Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("data"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1.h3))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h2))) : Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("data"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$0.h1.h3))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h2))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Text("where"), Lib_Prettier_Seq(Lib_Prettier_line, Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier__$3C$2F$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(eta)), _$$0.h3.h1))))))) ); case 2: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("#check"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h2))); case 1: return Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier__$3C$2F$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty_prettyPair(_$$0, _$$0.h0, _$$0.h1, _$$0.h2, eta)), _$$0.h2)); case 0: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_folddoc(( eta ) => (( eta1 ) => (Lib_Prettier_Prelude_Semigroup$20Lib_Prettier_Doc$2C_$3C$2B$3E_(eta, eta1))), Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Prettier_text, _$$0.h1)), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Nest(2, Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$0.h2)))); } }; const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc = ( _$$3, _$$4 ) => { switch (_$$4.tag) { case 15: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("{"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("TODO RUpdateRec"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("}"))); case 14: return Lib_Prettier_Seq(Lib_Prettier_Text(_$$4.h1), Lib_Prettier_Seq(Lib_Prettier_Text("@("), Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(0, _$$4.h2), Lib_Prettier_Text(")")))); case 13: return Lib_Prettier_Text("TODO pretty RWhere"); case 12: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par(_$$3, 0, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("if"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(0, _$$4.h1))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Prettier_Seq(Lib_Prettier_Text("then"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(0, _$$4.h2))))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Prettier_Seq(Lib_Prettier_Text("else"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(0, _$$4.h3)))))); case 11: return Lib_Prettier_Text("TODO - Pretty RDo"); case 10: return Lib_Prettier_Text("?"); case 9: return Lib_Prettier_Text("_"); case 8: return Lib_Prettier_Text("TODO - Pretty RCase"); case 7: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Types_Literal$2Cpretty(_$$4.h1); case 6: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par(_$$3, 0, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("let"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(_$$4.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(_$$3, _$$4.h3))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("="))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(_$$3, _$$4.h2))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Prettier_Seq(Lib_Prettier_Text("in"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(_$$3, _$$4.h4)))))); case 5: switch (_$$4.h1.h1) { case "_": switch (_$$4.h1.h2) { case 1: switch (_$$4.h1.h3) { case true: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par(_$$3, 1, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(_$$3, _$$4.h2), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("->"))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(_$$3, _$$4.h3)))); default: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par(_$$3, 1, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_wrap(_$$4.h1.h2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text((Lib_Types_Prelude_Show$20Lib_Types_Quant$2Cshow(_$$4.h1.h3)) + (_$$4.h1.h1)), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(_$$3, _$$4.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("->"))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(1, _$$4.h3)))); } break; default: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par(_$$3, 1, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_wrap(_$$4.h1.h2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text((Lib_Types_Prelude_Show$20Lib_Types_Quant$2Cshow(_$$4.h1.h3)) + (_$$4.h1.h1)), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(_$$3, _$$4.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("->"))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(1, _$$4.h3)))); } break; default: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par(_$$3, 1, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_wrap(_$$4.h1.h2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text((Lib_Types_Prelude_Show$20Lib_Types_Quant$2Cshow(_$$4.h1.h3)) + (_$$4.h1.h1)), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(":"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(_$$3, _$$4.h2)))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("->"))), Lib_Prettier_Seq(Lib_Prettier_Alt(Lib_Prettier_Text(" "), Lib_Prettier_line), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(1, _$$4.h3)))); } break; case 4: return Lib_Prettier_Text("()"); case 3: return Lib_Prettier_Text("U"); case 2: switch (_$$4.h3) { case 2: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par(_$$3, 2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(2, _$$4.h1), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("{{"))), Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(0, _$$4.h2), Lib_Prettier_Text("}}")))); case 1: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par(_$$3, 2, Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(2, _$$4.h1), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(3, _$$4.h2)))); case 0: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par(_$$3, 2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(2, _$$4.h1), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("{"))), Lib_Prettier_Seq(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(0, _$$4.h2), Lib_Prettier_Text("}")))); } break; case 1: return Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par(_$$3, 0, Lib_Prettier_Seq(Lib_Prettier_Text("\\"), Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Syntax_wrap(_$$4.h1.h2, Lib_Prettier_Text(_$$4.h1.h1)), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text("=>"))), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(0, _$$4.h2))))); case 0: return Lib_Prettier_Text(_$$4.h1); } }; const Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty = ( eta ) => (Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty_bindDoc_par_asDoc(0, eta)); const Lib_Syntax_wrap = ( _$$0, _$$1 ) => { switch (_$$0) { case 2: return Lib_Prettier_Seq(Lib_Prettier_Text("{{"), Lib_Prettier_Seq(_$$1, Lib_Prettier_Text("}}"))); case 1: return Lib_Prettier_Seq(Lib_Prettier_Text("("), Lib_Prettier_Seq(_$$1, Lib_Prettier_Text(")"))); case 0: return Lib_Prettier_Seq(Lib_Prettier_Text("{"), Lib_Prettier_Seq(_$$1, Lib_Prettier_Text("}"))); } }; @@ -595,7 +599,7 @@ const Lib_ProcessDecl_REC_processShortData_mkPi_getArgs = ( arg ) => { switch (a const Lib_ProcessDecl_processPrimType = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_MkCtx(0, Prelude_Nil(), Prelude_Nil(), Prelude_Nil(), _$$1), Prelude_maybe(Lib_Syntax_RU(_$$1), ( _$$11 ) => (_$$11), _$$3), Lib_Types_VU(_$$1)), ( ty$27 ) => { const arity = Prelude_natToInt(Lib_Util_piArity(ty$27)); return Lib_TopContext_setDef(Lib_Common_QN(_$$0, _$$2), _$$1, ty$27, Lib_Types_PrimTCon(arity), Prelude_Nil()); })))); const Lib_Types_PrimTCon = ( h0 ) => ({ tag: 4, h0: h0 }); const Lib_ProcessDecl_processPrimFn = ( _$$0, _$$1, _$$2, _$$3, _$$4, _$$5 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_MkCtx(0, Prelude_Nil(), Prelude_Nil(), Prelude_Nil(), _$$1), _$$4, Lib_Types_VU(_$$1)), ( ty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), ty), ( eta ) => (Lib_Eval_quote(Prelude_length$27(Prelude_Nil()), eta))), ( ty$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ((((((("pfunc ") + (_$$2)) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), ty$27))), Prelude_Lin()))) + (" = ")) + (_$$5)) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, _$$3, ( name ) => { const sc$$11 = Lib_TopContext_lookupRaw(name, top); return ( (sc$$11.tag) == (1) ? Lib_Types_MkM(( _1 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("") + (name)) + (" not in scope"))), eta)))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(sc$$11.h1.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()); })))))))))); -const Lib_ProcessDecl_processClass = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _1 ) => ((("Class ") + (_$$2.h3)) + (""))), ( _1 ) => { const fields = Lib_ProcessDecl_getSigs(_$$4); const dcName = (("Mk") + (_$$2.h3)) + (""); const tcType = Lib_ProcessDecl_teleToPi(_$$3, Lib_Syntax_RU(_$$1)); const tail = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp_mkPi_mkApp(_$$0, _$$1, _$$2, _$$3, _$$4, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h3, eta, eta1))), Lib_Syntax_RVar(_$$1, _$$2.h3), _$$3); const dcType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Prelude_Prelude_Foldable$20Prelude_List$2Cfoldr(( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp_mkPi(_$$0, _$$1, _$$2, _$$3, _$$4, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h3, eta, eta1))), tail, fields)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _2 ) => ((("tcon type ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(tcType))), Prelude_Lin()))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _3 ) => ((("dcon type ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(dcType))), Prelude_Lin()))) + (""))), ( _3 ) => { const decl = Lib_Syntax_Data(_$$1, Prelude__$2C_(_$$2.h2, _$$2.h3), tcType, Prelude_Just(Prelude__$3A$3A_(Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(dcName, Prelude_Nil()), dcType), Prelude_Nil()))); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _4 ) => ("Decl:")), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _5 ) => (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _5 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_$$0, decl), ( _6 ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( _$$31 ) => (0), Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, fields, ( $$case ) => { const funType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Lib_Syntax_RPi($$case.h2, Lib_Types_BI($$case.h2, "_", 2, true), tail, $$case.h3.h3)); const autoPat = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp(_$$0, _$$1, _$$2, _$$3, _$$4, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h3, eta, eta1))), Lib_Syntax_RVar(_$$1, dcName), fields); const lhs = Lib_ProcessDecl_processClass_makeLHS(_$$0, _$$1, _$$2, _$$3, _$$4, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h3, Lib_Syntax_RVar($$case.h2, $$case.h3.h2), _$$3); const lhs1 = Lib_Syntax_RApp(_$$1, lhs, autoPat, 2); const decl1 = Lib_Syntax_FunDef($$case.h2, $$case.h3.h2, Prelude__$3A$3A_(Prelude__$2C_(lhs1, Prelude_Just(Lib_Syntax_RVar($$case.h2, $$case.h3.h2))), Prelude_Nil())); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _7 ) => ((((("") + ($$case.h3.h2)) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(funType))), Prelude_Lin()))) + (""))), ( _7 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _8 ) => ((("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl1))), Prelude_Lin()))) + (""))), ( _8 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_$$0, Lib_Syntax_TypeSig($$case.h2, Prelude__$3A$3A_($$case.h3.h2, Prelude_Nil()), funType)), ( _9 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setFlag(Lib_Common_QN(_$$0, $$case.h3.h2), $$case.h2, true), ( _10 ) => (Lib_ProcessDecl_processDecl(_$$0, decl1))))))))); })))))))); }))); })))); +const Lib_ProcessDecl_processClass = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _1 ) => ((("Class ") + (_$$2.h3)) + (""))), ( _1 ) => { const fields = Lib_ProcessDecl_getSigs(_$$4); const dcName = (("Mk") + (_$$2.h3)) + (""); const tcType = Lib_ProcessDecl_teleToPi(_$$3, Lib_Syntax_RU(_$$1)); const tail = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp_mkPi_mkApp(_$$0, _$$1, _$$2, _$$3, _$$4, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h3, eta, eta1))), Lib_Syntax_RVar(_$$1, _$$2.h3), _$$3); const dcType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Prelude_Prelude_Foldable$20Prelude_List$2Cfoldr(( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp_mkPi(_$$0, _$$1, _$$2, _$$3, _$$4, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h3, eta, eta1))), tail, fields)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _2 ) => ((("tcon type ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(tcType))), Prelude_Lin()))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _3 ) => ((("dcon type ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(dcType))), Prelude_Lin()))) + (""))), ( _3 ) => { const decl = Lib_Syntax_Data(_$$1, Prelude__$2C_(_$$2.h2, _$$2.h3), tcType, Prelude_Just(Prelude__$3A$3A_(Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(dcName, Prelude_Nil()), dcType), Prelude_Nil()))); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _4 ) => ("Decl:")), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _5 ) => (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _5 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_$$0, decl), ( _6 ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( _$$31 ) => (0), Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, fields, ( $$case ) => { const funType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Lib_Syntax_RPi($$case.h2, Lib_Types_BI($$case.h2, "_", 2, true), tail, $$case.h3.h3)); const autoPat = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_ProcessDecl_processClass_makeLHS_mkAutoApp(_$$0, _$$1, _$$2, _$$3, _$$4, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h3, eta, eta1))), Lib_Syntax_RVar(_$$1, dcName), fields); const lhs = Lib_ProcessDecl_processClass_makeLHS(_$$0, _$$1, _$$2, _$$3, _$$4, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h3, Lib_Syntax_RVar($$case.h2, $$case.h3.h2), _$$3); const lhs1 = Lib_Syntax_RApp(_$$1, lhs, autoPat, 2); const decl1 = Lib_Syntax_FunDef($$case.h2, $$case.h3.h2, Prelude__$3A$3A_(Prelude__$2C_(lhs1, Prelude_Just(Lib_Syntax_RVar($$case.h2, $$case.h3.h2))), Prelude_Nil())); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _7 ) => ((((("") + ($$case.h3.h2)) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(funType))), Prelude_Lin()))) + (""))), ( _7 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _8 ) => ((("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl1))), Prelude_Lin()))) + (""))), ( _8 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_$$0, Lib_Syntax_TypeSig($$case.h2, Prelude__$3A$3A_($$case.h3.h2, Prelude_Nil()), funType)), ( _9 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setFlag(Lib_Common_QN(_$$0, $$case.h3.h2), $$case.h2, 1), ( _10 ) => (Lib_ProcessDecl_processDecl(_$$0, decl1))))))))); })))))))); }))); })))); const Lib_ProcessDecl_processClass_makeLHS = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _$$10, _$$11 ) => (( (_$$11.tag) == (1) ? Lib_Syntax_RApp(_$$11.h1.h2.h0, Lib_ProcessDecl_processClass_makeLHS(_, _1, _2, _3, _4, _5, _6, _7, _8, _$$10, _$$11.h2), Lib_Syntax_RVar(_$$11.h1.h2.h0, _$$11.h1.h2.h1), 0) : _$$10 )); const Lib_ProcessDecl_processClass_makeLHS_mkAutoApp = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _$$11, _$$12 ) => (Lib_Syntax_RApp(_$$12.h2, _$$11, Lib_Syntax_RVar(_$$12.h2, _$$12.h3.h2), 1)); const Lib_ProcessDecl_impTele = ( _$$0 ) => (Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_ProcessDecl_impTele_foo(_$$0, eta)), _$$0)); @@ -605,8 +609,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, _$$13, _$$14 ) => (Lib_Syntax_RApp(_$$14.h2.h0, _$$13, Lib_Syntax_RVar(_$$14.h2.h0, _$$14.h2.h1), _$$14.h2.h2)); const Lib_ProcessDecl_getSigs = ( _$$0 ) => (bouncer(Lib_ProcessDecl_REC_getSigs, { tag: 1, h0: _$$0 })); const Lib_ProcessDecl_REC_getSigs = ( arg ) => (( (arg.h0.tag) == (1) ? ( (arg.h0.h1.tag) == (0) ? ( (arg.h0.h1.h1.tag) == (1) ? { tag: 0, h0: Prelude__$3A$3A_(Prelude__$2C_(arg.h0.h1.h0, Prelude__$2C_(arg.h0.h1.h1.h1, arg.h0.h1.h2)), Lib_ProcessDecl_getSigs(arg.h0.h2)) } : { tag: 1, h0: arg.h0.h2 } ) : { tag: 1, h0: arg.h0.h2 } ) : { tag: 0, h0: Prelude_Nil() } )); -const Lib_ProcessDecl_processInstance = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _1 ) => ((("Instance ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$2))), Prelude_Lin()))) + (""))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const tyFC = Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_MkCtx(0, Prelude_Nil(), Prelude_Nil(), Prelude_Nil(), _$$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, Prelude_length(sc$$13.h3)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((("codomain ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$13.h2))), Prelude_Lin()))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _3 ) => ((("tele is ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Util_Prelude_Show$20Lib_Util_Binder, sc$$13.h3))) + (""))), ( _3 ) => { const instname = Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$13.h2))), Prelude_Lin()); const sigDecl = Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(instname, Prelude_Nil()), _$$2); const sc$$23 = Lib_TopContext_lookup(Lib_Common_QN(_$$0, instname), top); return ( (sc$$23.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_$$0, sigDecl), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setFlag(Lib_Common_QN(_$$0, instname), _$$1, false), ( _5 ) => (Lib_TopContext_addHint(Lib_Common_QN(_$$0, instname)))))), ( _4 ) => { const sc$$24 = Prelude_Prelude_Functor$20Prelude_Maybe$2Cmap(( eta ) => (Lib_Elab_collectDecl(eta)), _$$3); if ((sc$$24.tag) == (0)) { const sc$$27 = Lib_Util_funArgs(sc$$13.h2); if ((sc$$27.h2.tag) == (1)) { const sc$$34 = Lib_TopContext_lookup(sc$$27.h2.h1, top); if ((sc$$34.tag) == (0)) { if ((sc$$34.h1.h3.tag) == (1)) { if ((sc$$34.h1.h3.h1.tag) == (1)) { if ((sc$$34.h1.h3.h1.h2.tag) == (0)) { const sc$$49 = Lib_TopContext_lookup(sc$$34.h1.h3.h1.h1, top); return ( (sc$$49.tag) == (0) ? ( (sc$$49.h1.h3.tag) == (2) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), sc$$49.h1.h2), ( $$sc ) => (( ($$sc.tag) == (5) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((("dcty ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$49.h1.h2))), Prelude_Lin()))) + (""))), ( _5 ) => { const sc$$70 = Lib_Util_funArgs(sc$$13.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _6 ) => ((("traverse ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Types_showTm, sc$$70.h3)))) + (""))), ( _6 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Eval_eval(env, eta)), sc$$70.h3), ( args$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _7 ) => ((("args' is ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, args$27))) + (""))), ( _7 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$2, _$$3, $$sc, args$27), ( appty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processInstance_getFields(_$$0, _$$1, _$$2, _$$3, appty, env, Prelude_Nil()), ( conTele ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, conTele, ( $$case ) => { switch ($$case.h2) { case 1: { const ty$27 = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldr(( x ) => (( acc ) => (Lib_Types_Pi(x.h0, x.h1, x.h2, x.h3, x.h4, acc))), $$case.h4, sc$$13.h3); const nm$27 = (((("") + (instname)) + (",")) + ($$case.h1)) + (""); const sc$$89 = Prelude_find(( x ) => (( (x.tag) == (1) ? (x.h1) == ($$case.h1) : false )), sc$$24.h1); return ( (sc$$89.tag) == (0) ? ( (sc$$89.h1.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), sc$$89.h1.h0, ty$27, Lib_Types_Axiom, Prelude_Nil()), ( _8 ) => { const decl = Lib_Syntax_FunDef(sc$$89.h1.h0, nm$27, sc$$89.h1.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _9 ) => ("***")), ( _9 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _10 ) => ((((("«") + (nm$27)) + ("» : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), ty$27))), Prelude_Lin()))) + (""))), ( _10 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _11 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _11 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Just(decl)))))))); }) : Lib_Types_MkM(( _8 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("no definition for ") + ($$case.h1)) + (""))), eta)))) ) : Lib_Types_MkM(( _8 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("no definition for ") + ($$case.h1)) + (""))), eta)))) ); break; } default: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()); } }), ( defs ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_mapMaybe(( _$$11 ) => (_$$11), defs), ( decl ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _8 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _8 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))), ( _8 ) => { const decl = Lib_Syntax_FunDef(_$$1, instname, Prelude__$3A$3A_(Prelude__$2C_(Lib_Syntax_RVar(_$$1, instname), Prelude_Just(Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS(_$$0, _$$1, _$$2, _$$3, instname, conTele, Lib_Syntax_RVar(_$$1, sc$$34.h1.h3.h1.h1.h1)))), Prelude_Nil())); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _9 ) => ("SIGDECL")), ( _9 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _10 ) => ((("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(sigDecl))), Prelude_Lin()))) + (""))), ( _10 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _11 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _11 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))))); }))))))))))))); }) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_getValFC($$sc), "dcty not Pi")), eta)))) ))) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("can't find constructor ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$34.h1.h3.h1.h1))) + (""))), eta)))) ) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("can't find constructor ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$34.h1.h3.h1.h1))) + (""))), eta)))) ); } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" has multiple constructors ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, sc$$34.h1.h3.h1))) + (""))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" has multiple constructors ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, sc$$34.h1.h3.h1))) + (""))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" is not a type constructor"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" is not a type constructor"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$13.h2))), Prelude_Lin()))) + (" doesn't appear to be a TCon application"))), eta)))); } } else { return Lib_Types_log(2, ( _5 ) => ((("Forward declaration ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow(sigDecl))) + (""))); } }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0), ( _4 ) => { const sc$$24 = Prelude_Prelude_Functor$20Prelude_Maybe$2Cmap(( eta ) => (Lib_Elab_collectDecl(eta)), _$$3); if ((sc$$24.tag) == (0)) { const sc$$27 = Lib_Util_funArgs(sc$$13.h2); if ((sc$$27.h2.tag) == (1)) { const sc$$34 = Lib_TopContext_lookup(sc$$27.h2.h1, top); if ((sc$$34.tag) == (0)) { if ((sc$$34.h1.h3.tag) == (1)) { if ((sc$$34.h1.h3.h1.tag) == (1)) { if ((sc$$34.h1.h3.h1.h2.tag) == (0)) { const sc$$49 = Lib_TopContext_lookup(sc$$34.h1.h3.h1.h1, top); return ( (sc$$49.tag) == (0) ? ( (sc$$49.h1.h3.tag) == (2) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), sc$$49.h1.h2), ( $$sc ) => (( ($$sc.tag) == (5) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((("dcty ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$49.h1.h2))), Prelude_Lin()))) + (""))), ( _5 ) => { const sc$$70 = Lib_Util_funArgs(sc$$13.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _6 ) => ((("traverse ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Types_showTm, sc$$70.h3)))) + (""))), ( _6 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Eval_eval(env, eta)), sc$$70.h3), ( args$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _7 ) => ((("args' is ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, args$27))) + (""))), ( _7 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$2, _$$3, $$sc, args$27), ( appty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processInstance_getFields(_$$0, _$$1, _$$2, _$$3, appty, env, Prelude_Nil()), ( conTele ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, conTele, ( $$case ) => { switch ($$case.h2) { case 1: { const ty$27 = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldr(( x ) => (( acc ) => (Lib_Types_Pi(x.h0, x.h1, x.h2, x.h3, x.h4, acc))), $$case.h4, sc$$13.h3); const nm$27 = (((("") + (instname)) + (",")) + ($$case.h1)) + (""); const sc$$89 = Prelude_find(( x ) => (( (x.tag) == (1) ? (x.h1) == ($$case.h1) : false )), sc$$24.h1); return ( (sc$$89.tag) == (0) ? ( (sc$$89.h1.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), sc$$89.h1.h0, ty$27, Lib_Types_Axiom, Prelude_Nil()), ( _8 ) => { const decl = Lib_Syntax_FunDef(sc$$89.h1.h0, nm$27, sc$$89.h1.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _9 ) => ("***")), ( _9 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _10 ) => ((((("«") + (nm$27)) + ("» : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), ty$27))), Prelude_Lin()))) + (""))), ( _10 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _11 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _11 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Just(decl)))))))); }) : Lib_Types_MkM(( _8 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("no definition for ") + ($$case.h1)) + (""))), eta)))) ) : Lib_Types_MkM(( _8 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("no definition for ") + ($$case.h1)) + (""))), eta)))) ); break; } default: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()); } }), ( defs ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_mapMaybe(( _$$11 ) => (_$$11), defs), ( decl ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _8 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _8 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))), ( _8 ) => { const decl = Lib_Syntax_FunDef(_$$1, instname, Prelude__$3A$3A_(Prelude__$2C_(Lib_Syntax_RVar(_$$1, instname), Prelude_Just(Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS(_$$0, _$$1, _$$2, _$$3, instname, conTele, Lib_Syntax_RVar(_$$1, sc$$34.h1.h3.h1.h1.h1)))), Prelude_Nil())); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _9 ) => ("SIGDECL")), ( _9 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _10 ) => ((("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(sigDecl))), Prelude_Lin()))) + (""))), ( _10 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _11 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _11 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))))); }))))))))))))); }) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_getValFC($$sc), "dcty not Pi")), eta)))) ))) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("can't find constructor ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$34.h1.h3.h1.h1))) + (""))), eta)))) ) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("can't find constructor ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$34.h1.h3.h1.h1))) + (""))), eta)))) ); } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" has multiple constructors ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, sc$$34.h1.h3.h1))) + (""))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" has multiple constructors ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, sc$$34.h1.h3.h1))) + (""))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" is not a type constructor"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" is not a type constructor"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$13.h2))), Prelude_Lin()))) + (" doesn't appear to be a TCon application"))), eta)))); } } else { return Lib_Types_log(2, ( _5 ) => ((("Forward declaration ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow(sigDecl))) + (""))); } }) ); }))); }); })))))); -const Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow = ( _$$0 ) => { switch (_$$0.tag) { case 10: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("Record", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_FC, Prelude_Prelude_Show$20Prim_String, _$$0.h1), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Types_BindInfo, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, eta))), _$$0.h2), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_FC, Prelude_Prelude_Show$20Prim_String, eta))), _$$0.h3), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl, _$$0.h4), Prelude_Nil()))))))) + (")")); case 9: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("Instance", Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h1), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, Prelude_Prelude_Functor$20Prelude_Maybe$2Cmap(( eta ) => (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl, eta)), _$$0.h2)), Prelude_Nil()))))) + (")")); case 8: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("Class", Prelude__$3A$3A_(_$$0.h1.h3, Prelude__$3A$3A_("...", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow(eta)), _$$0.h3)), Prelude_Nil())))))) + (")")); case 7: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("PMixFix", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, _$$0.h1), Prelude__$3A$3A_(Prelude_showInt(_$$0.h2), Prelude__$3A$3A_(Lib_Common_Prelude_Show$20Lib_Common_Fixity$2Cshow(_$$0.h3), Prelude_Nil())))))) + (")")); case 6: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("PFunc", Prelude__$3A$3A_(_$$0.h1, Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, _$$0.h2), Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h3), Prelude__$3A$3A_(_$$0.h4, Prelude_Nil()))))))) + (")")); case 5: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("PType", Prelude__$3A$3A_(_$$0.h1, Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, _$$0.h2), Prelude_Nil()))))) + (")")); case 4: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("ShortData", Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h1), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, _$$0.h2), Prelude_Nil()))))) + (")")); case 3: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("Data", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_FC, Prelude_Prelude_Show$20Prim_String, _$$0.h1), Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h2), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl, eta))), _$$0.h3), Prelude_Nil())))))) + (")")); case 2: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("DCheck", Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h1), Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h2), Prelude_Nil()))))) + (")")); case 1: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("FunDef", Prelude__$3A$3A_(_$$0.h1, Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, eta))), eta))), _$$0.h2), Prelude_Nil()))))) + (")")); case 0: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("TypeSig", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, _$$0.h1), Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h2), Prelude_Nil()))))) + (")")); } }; +const Lib_ProcessDecl_processInstance = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _1 ) => ((("Instance ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(_$$2))), Prelude_Lin()))) + (""))), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const tyFC = Lib_Syntax_Lib_Common_HasFC$20Lib_Syntax_Raw$2CgetFC(_$$2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_check(Lib_Types_MkCtx(0, Prelude_Nil(), Prelude_Nil(), Prelude_Nil(), _$$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, Prelude_length(sc$$13.h3)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _2 ) => ((("codomain ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$13.h2))), Prelude_Lin()))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _3 ) => ((("tele is ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Util_Prelude_Show$20Lib_Util_Binder, sc$$13.h3))) + (""))), ( _3 ) => { const instname = Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$13.h2))), Prelude_Lin()); const sigDecl = Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(instname, Prelude_Nil()), _$$2); const sc$$23 = Lib_TopContext_lookup(Lib_Common_QN(_$$0, instname), top); return ( (sc$$23.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_$$0, sigDecl), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setFlag(Lib_Common_QN(_$$0, instname), _$$1, 0), ( _5 ) => (Lib_TopContext_addHint(Lib_Common_QN(_$$0, instname)))))), ( _4 ) => { const sc$$24 = Prelude_Prelude_Functor$20Prelude_Maybe$2Cmap(( eta ) => (Lib_Elab_collectDecl(eta)), _$$3); if ((sc$$24.tag) == (0)) { const sc$$27 = Lib_Util_funArgs(sc$$13.h2); if ((sc$$27.h2.tag) == (1)) { const sc$$34 = Lib_TopContext_lookup(sc$$27.h2.h1, top); if ((sc$$34.tag) == (0)) { if ((sc$$34.h1.h3.tag) == (1)) { if ((sc$$34.h1.h3.h1.tag) == (1)) { if ((sc$$34.h1.h3.h1.h2.tag) == (0)) { const sc$$49 = Lib_TopContext_lookup(sc$$34.h1.h3.h1.h1, top); return ( (sc$$49.tag) == (0) ? ( (sc$$49.h1.h3.tag) == (2) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), sc$$49.h1.h2), ( $$sc ) => (( ($$sc.tag) == (5) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((("dcty ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$49.h1.h2))), Prelude_Lin()))) + (""))), ( _5 ) => { const sc$$70 = Lib_Util_funArgs(sc$$13.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _6 ) => ((("traverse ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Types_showTm, sc$$70.h3)))) + (""))), ( _6 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Eval_eval(env, eta)), sc$$70.h3), ( args$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _7 ) => ((("args' is ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, args$27))) + (""))), ( _7 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$2, _$$3, $$sc, args$27), ( appty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processInstance_getFields(_$$0, _$$1, _$$2, _$$3, appty, env, Prelude_Nil()), ( conTele ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, conTele, ( $$case ) => { switch ($$case.h2) { case 1: { const ty$27 = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldr(( x ) => (( acc ) => (Lib_Types_Pi(x.h0, x.h1, x.h2, x.h3, x.h4, acc))), $$case.h4, sc$$13.h3); const nm$27 = (((("") + (instname)) + (",")) + ($$case.h1)) + (""); const sc$$89 = Prelude_find(( x ) => (( (x.tag) == (1) ? (x.h1) == ($$case.h1) : false )), sc$$24.h1); return ( (sc$$89.tag) == (0) ? ( (sc$$89.h1.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), sc$$89.h1.h0, ty$27, Lib_Types_Axiom, Prelude_Nil()), ( _8 ) => { const decl = Lib_Syntax_FunDef(sc$$89.h1.h0, nm$27, sc$$89.h1.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _9 ) => ("***")), ( _9 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _10 ) => ((((("«") + (nm$27)) + ("» : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), ty$27))), Prelude_Lin()))) + (""))), ( _10 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _11 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _11 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Just(decl)))))))); }) : Lib_Types_MkM(( _8 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("no definition for ") + ($$case.h1)) + (""))), eta)))) ) : Lib_Types_MkM(( _8 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("no definition for ") + ($$case.h1)) + (""))), eta)))) ); break; } default: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()); } }), ( defs ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_mapMaybe(( _$$11 ) => (_$$11), defs), ( decl ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _8 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _8 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))), ( _8 ) => { const decl = Lib_Syntax_FunDef(_$$1, instname, Prelude__$3A$3A_(Prelude__$2C_(Lib_Syntax_RVar(_$$1, instname), Prelude_Just(Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS(_$$0, _$$1, _$$2, _$$3, instname, conTele, Lib_Syntax_RVar(_$$1, sc$$34.h1.h3.h1.h1.h1)))), Prelude_Nil())); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _9 ) => ("SIGDECL")), ( _9 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _10 ) => ((("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(sigDecl))), Prelude_Lin()))) + (""))), ( _10 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _11 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _11 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))))); }))))))))))))); }) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_getValFC($$sc), "dcty not Pi")), eta)))) ))) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("can't find constructor ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$34.h1.h3.h1.h1))) + (""))), eta)))) ) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("can't find constructor ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$34.h1.h3.h1.h1))) + (""))), eta)))) ); } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" has multiple constructors ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, sc$$34.h1.h3.h1))) + (""))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" has multiple constructors ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, sc$$34.h1.h3.h1))) + (""))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" is not a type constructor"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" is not a type constructor"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$13.h2))), Prelude_Lin()))) + (" doesn't appear to be a TCon application"))), eta)))); } } else { return Lib_Types_log(2, ( _5 ) => ((("Forward declaration ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow(sigDecl))) + (""))); } }) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0), ( _4 ) => { const sc$$24 = Prelude_Prelude_Functor$20Prelude_Maybe$2Cmap(( eta ) => (Lib_Elab_collectDecl(eta)), _$$3); if ((sc$$24.tag) == (0)) { const sc$$27 = Lib_Util_funArgs(sc$$13.h2); if ((sc$$27.h2.tag) == (1)) { const sc$$34 = Lib_TopContext_lookup(sc$$27.h2.h1, top); if ((sc$$34.tag) == (0)) { if ((sc$$34.h1.h3.tag) == (1)) { if ((sc$$34.h1.h3.h1.tag) == (1)) { if ((sc$$34.h1.h3.h1.h2.tag) == (0)) { const sc$$49 = Lib_TopContext_lookup(sc$$34.h1.h3.h1.h1, top); return ( (sc$$49.tag) == (0) ? ( (sc$$49.h1.h3.tag) == (2) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude_Nil(), sc$$49.h1.h2), ( $$sc ) => (( ($$sc.tag) == (5) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _5 ) => ((("dcty ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$49.h1.h2))), Prelude_Lin()))) + (""))), ( _5 ) => { const sc$$70 = Lib_Util_funArgs(sc$$13.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _6 ) => ((("traverse ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, Prelude_Prelude_Functor$20Prelude_List$2Cmap(Lib_Types_showTm, sc$$70.h3)))) + (""))), ( _6 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Eval_eval(env, eta)), sc$$70.h3), ( args$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _7 ) => ((("args' is ") + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, args$27))) + (""))), ( _7 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply(_$$0, _$$1, _$$2, _$$3, $$sc, args$27), ( appty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processInstance_getFields(_$$0, _$$1, _$$2, _$$3, appty, env, Prelude_Nil()), ( conTele ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, conTele, ( $$case ) => { switch ($$case.h2) { case 1: { const ty$27 = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldr(( x ) => (( acc ) => (Lib_Types_Pi(x.h0, x.h1, x.h2, x.h3, x.h4, acc))), $$case.h4, sc$$13.h3); const nm$27 = (((("") + (instname)) + (",")) + ($$case.h1)) + (""); const sc$$89 = Prelude_find(( x ) => (( (x.tag) == (1) ? (x.h1) == ($$case.h1) : false )), sc$$24.h1); return ( (sc$$89.tag) == (0) ? ( (sc$$89.h1.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setDef(Lib_Common_QN(_$$0, nm$27), sc$$89.h1.h0, ty$27, Lib_Types_Axiom, Prelude_Nil()), ( _8 ) => { const decl = Lib_Syntax_FunDef(sc$$89.h1.h0, nm$27, sc$$89.h1.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _9 ) => ("***")), ( _9 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _10 ) => ((((("«") + (nm$27)) + ("» : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), ty$27))), Prelude_Lin()))) + (""))), ( _10 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _11 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _11 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Just(decl)))))))); }) : Lib_Types_MkM(( _8 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("no definition for ") + ($$case.h1)) + (""))), eta)))) ) : Lib_Types_MkM(( _8 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("no definition for ") + ($$case.h1)) + (""))), eta)))) ); break; } default: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nothing()); } }), ( defs ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_mapMaybe(( _$$11 ) => (_$$11), defs), ( decl ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _8 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _8 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))), ( _8 ) => { const decl = Lib_Syntax_FunDef(_$$1, instname, Prelude__$3A$3A_(Prelude__$2C_(Lib_Syntax_RVar(_$$1, instname), Prelude_Just(Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS(_$$0, _$$1, _$$2, _$$3, instname, conTele, Lib_Syntax_RVar(_$$1, sc$$34.h1.h3.h1.h1.h1)))), Prelude_Nil())); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _9 ) => ("SIGDECL")), ( _9 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _10 ) => ((("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(sigDecl))), Prelude_Lin()))) + (""))), ( _10 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _11 ) => (Lib_Prettier_layout(Lib_Prettier_best(80, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _11 ) => (Lib_ProcessDecl_processDecl(_$$0, decl))))))); }))))))))))))); }) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_getValFC($$sc), "dcty not Pi")), eta)))) ))) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("can't find constructor ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$34.h1.h3.h1.h1))) + (""))), eta)))) ) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("can't find constructor ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$34.h1.h3.h1.h1))) + (""))), eta)))) ); } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" has multiple constructors ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, sc$$34.h1.h3.h1))) + (""))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" has multiple constructors ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, sc$$34.h1.h3.h1))) + (""))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" is not a type constructor"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$27.h2.h1))) + (" is not a type constructor"))), eta)))); } } else { return Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(tyFC, (("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), sc$$13.h2))), Prelude_Lin()))) + (" doesn't appear to be a TCon application"))), eta)))); } } else { return Lib_Types_log(2, ( _5 ) => ((("Forward declaration ") + (Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow(sigDecl))) + (""))); } }) ); }))); }); })))))); +const Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow = ( _$$0 ) => { switch (_$$0.tag) { case 11: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("Exports", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_FC, Prelude_Prelude_Show$20Prim_String, eta))), _$$0.h1), Prelude_Nil())))) + (")")); case 10: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("Record", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_FC, Prelude_Prelude_Show$20Prim_String, _$$0.h1), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Types_BindInfo, Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, eta))), _$$0.h2), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_FC, Prelude_Prelude_Show$20Prim_String, eta))), _$$0.h3), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl, _$$0.h4), Prelude_Nil()))))))) + (")")); case 9: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("Instance", Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h1), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, Prelude_Prelude_Functor$20Prelude_Maybe$2Cmap(( eta ) => (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl, eta)), _$$0.h2)), Prelude_Nil()))))) + (")")); case 8: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("Class", Prelude__$3A$3A_(_$$0.h1.h3, Prelude__$3A$3A_("...", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow(eta)), _$$0.h3)), Prelude_Nil())))))) + (")")); case 7: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("PMixFix", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, _$$0.h1), Prelude__$3A$3A_(Prelude_showInt(_$$0.h2), Prelude__$3A$3A_(Lib_Common_Prelude_Show$20Lib_Common_Fixity$2Cshow(_$$0.h3), Prelude_Nil())))))) + (")")); case 6: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("PFunc", Prelude__$3A$3A_(_$$0.h1, Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, _$$0.h2), Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h3), Prelude__$3A$3A_(_$$0.h4, Prelude_Nil()))))))) + (")")); case 5: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("PType", Prelude__$3A$3A_(_$$0.h1, Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, _$$0.h2), Prelude_Nil()))))) + (")")); case 4: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("ShortData", Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h1), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, _$$0.h2), Prelude_Nil()))))) + (")")); case 3: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("Data", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_FC, Prelude_Prelude_Show$20Prim_String, _$$0.h1), Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h2), Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl, eta))), _$$0.h3), Prelude_Nil())))))) + (")")); case 2: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("DCheck", Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h1), Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h2), Prelude_Nil()))))) + (")")); case 1: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("FunDef", Prelude__$3A$3A_(_$$0.h1, Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, Prelude_MkShow(( eta ) => (Prelude_Prelude_Show$20$28Prelude_Maybe$20BND$3A1$29$2Cshow(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw, eta))), eta))), _$$0.h2), Prelude_Nil()))))) + (")")); case 0: return ("(") + ((Prelude_joinBy(" ", Prelude__$3A$3A_("TypeSig", Prelude__$3A$3A_(Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Prelude_Prelude_Show$20Prim_String, _$$0.h1), Prelude__$3A$3A_(Lib_Syntax_Prelude_Show$20Lib_Syntax_Raw$2Cshow(_$$0.h2), Prelude_Nil()))))) + (")")); } }; const Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl = Prelude_MkShow(( eta ) => (Lib_Syntax_Prelude_Show$20Lib_Syntax_Decl$2Cshow(eta))); const Lib_Syntax_Prelude_Show$20Lib_Types_BindInfo = Prelude_MkShow(( eta ) => (Lib_Syntax_Prelude_Show$20Lib_Types_BindInfo$2Cshow(eta))); const Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS = ( _, _1, _2, _3, _$$7, _$$8, _$$9 ) => (bouncer(Lib_ProcessDecl_REC_processInstance_getFields_tenv_mkRHS, { tag: 1, h0: _, h1: _1, h2: _2, h3: _3, h4: null, h5: null, h6: null, h7: _$$7, h8: _$$8, h9: _$$9 })); @@ -614,14 +618,14 @@ const Lib_ProcessDecl_REC_processInstance_getFields_tenv_mkRHS = ( arg ) => { if const Lib_ProcessDecl_processInstance_getFields = ( _, _1, _2, _3, _$$5, _$$6, _$$7 ) => { if ((_$$5.tag) == (5)) { switch (_$$5.h2) { case 1: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Util_MkBinder(_$$5.h0, _$$5.h1, 1, _$$5.h3, eta)), Lib_Eval_quote(Prelude_length$27(_$$6), _$$5.h4)), ( bnd ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(Lib_Types_VVar(_$$5.h0, Prelude_length$27(_$$6), Prelude_Lin()), _$$5.h5.h0), _$$5.h5.h1), ( appsc ) => (Lib_ProcessDecl_processInstance_getFields(_, _1, _2, _3, appsc, _$$6, Prelude__$3A$3A_(bnd, _$$7)))))); default: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(Lib_Types_VVar(_$$5.h0, Prelude_length$27(_$$6), Prelude_Lin()), _$$5.h5.h0), _$$5.h5.h1), ( appsc ) => (Lib_ProcessDecl_processInstance_getFields(_, _1, _2, _3, appsc, _$$6, _$$7))); } } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_reverse()(_$$7)); } }; const Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply = ( _, _1, _2, _3, _$$8, _$$9 ) => (( (_$$9.tag) == (1) ? ( (_$$8.tag) == (5) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(Prelude__$3A$3A_(_$$9.h1, _$$8.h5.h0), _$$8.h5.h1), ( bx ) => (Lib_ProcessDecl_processInstance_getFields_tenv_mkRHS_apply(_, _1, _2, _3, bx, _$$9.h2))) : Lib_Types_MkM(( _4 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_1, (("expected pi type ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(_$$8))) + (""))), eta)))) ) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(_$$8) )); const Lib_Types_showTm = ( eta ) => (Lib_Types_Prelude_Show$20Lib_Types_Tm$2Cshow(eta)); -const Lib_TopContext_addHint = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$2 = Lib_TopContext_lookup(_$$0, top); if ((sc$$2.tag) == (1)) { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } else { const sc$$5 = Lib_TopContext_typeName(sc$$2.h1.h2); if ((sc$$5.tag) == (1)) { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$2.h1.h0, (("can't find tcon name for ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (""))), eta)))); } else { const xs = Prelude_fromMaybe(Prelude_Nil(), Data_SortedMap_lookupMap$27(sc$$5.h1, top.h2)); const hints = Data_SortedMap_updateMap(sc$$5.h1, Prelude__$3A$3A_(Prelude__$2C_(_$$0, sc$$2.h1.h2), xs), top.h2); return Lib_Types_putTop(Lib_Types_MkTop(top.h0, top.h1, hints, top.h3, top.h4, top.h5, top.h6, top.h7, top.h8)); } } })); +const Lib_TopContext_addHint = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$2 = Lib_TopContext_lookup(_$$0, top); if ((sc$$2.tag) == (1)) { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } else { const sc$$5 = Lib_TopContext_typeName(sc$$2.h1.h2); if ((sc$$5.tag) == (1)) { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(sc$$2.h1.h0, (("can't find tcon name for ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (""))), eta)))); } else { const xs = Prelude_fromMaybe(Prelude_Nil(), Data_SortedMap_lookupMap$27(sc$$5.h1, top.h2)); const hints = Data_SortedMap_updateMap(sc$$5.h1, Prelude__$3A$3A_(Prelude__$2C_(_$$0, sc$$2.h1.h2), xs), top.h2); return Lib_Types_putTop(Lib_Types_MkTop(top.h0, top.h1, hints, top.h3, top.h4, top.h5, top.h6, top.h7, top.h8, top.h9)); } } })); const Lib_TopContext_typeName = ( _$$0 ) => (bouncer(Lib_TopContext_REC_typeName, { tag: 1, h0: _$$0 })); const Lib_TopContext_REC_typeName = ( arg ) => { switch (arg.h0.tag) { case 6: switch (arg.h0.h2) { case 1: return { tag: 0, h0: Prelude_Nothing() }; default: return { tag: 1, h0: arg.h0.h5 }; } break; case 4: return { tag: 1, h0: arg.h0.h1 }; case 1: return { tag: 0, h0: Prelude_Just(arg.h0.h1) }; default: return { tag: 0, h0: Prelude_Nothing() }; } }; const Lib_Util_Prelude_Show$20Lib_Util_Binder$2Cshow = ( _$$0 ) => ((((((("[") + (Lib_Types_Prelude_Show$20Lib_Types_Quant$2Cshow(_$$0.h3))) + ("")) + (_$$0.h1)) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_Icit$2Cshow(_$$0.h2))) + (" : ...]")); const Lib_Util_Prelude_Show$20Lib_Util_Binder = Prelude_MkShow(( eta ) => (Lib_Util_Prelude_Show$20Lib_Util_Binder$2Cshow(eta))); const Lib_ProcessDecl_processInstance_getFields_tenv = ( _, _1, _2, _3, _$$6 ) => { switch (_$$6) { case 0: return Prelude_Nil(); default: { const x = (_$$6) - (1); return Prelude__$3A$3A_(Lib_Types_VVar(Lib_Common_emptyFC, Prelude_natToInt(x), Prelude_Lin()), Lib_ProcessDecl_processInstance_getFields_tenv(_, _1, _2, _3, x)); break; } } }; const Lib_ProcessDecl_processRecord = ( _$$0, _$$1, _$$2, _$$3, _$$4, _$$5 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _ ) => ("-----")), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _1 ) => ("Record")), ( _1 ) => { const fields = Lib_ProcessDecl_getSigs(_$$5); const sc$$14 = Prelude_fromMaybe(Prelude__$2C_(_$$2.h2, (("Mk") + (_$$2.h3)) + ("")), _$$4); const tcType = Lib_ProcessDecl_teleToPi(_$$3, Lib_Syntax_RU(_$$1)); const tail = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( acc ) => (( bi ) => (Lib_Syntax_RApp(bi.h2.h0, acc, Lib_Syntax_RVar(bi.h2.h0, bi.h2.h1), bi.h2.h2))), Lib_Syntax_RVar(_$$2.h2, _$$2.h3), _$$3); const dcType = Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_$$3), Prelude_Prelude_Foldable$20Prelude_List$2Cfoldr(( x ) => (( acc ) => (Lib_Syntax_RPi(x.h2, Lib_Types_BI(x.h2, x.h3.h2, 1, true), x.h3.h3, acc))), tail, fields)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _2 ) => ((("tcon type ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(tcType))), Prelude_Lin()))) + (""))), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _3 ) => ((("dcon type ") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(dcType))), Prelude_Lin()))) + (""))), ( _3 ) => { const decl = Lib_Syntax_Data(_$$1, Prelude__$2C_(_$$2.h2, _$$2.h3), tcType, Prelude_Just(Prelude__$3A$3A_(Lib_Syntax_TypeSig(_$$1, Prelude__$3A$3A_(sc$$14.h3, Prelude_Nil()), dcType), Prelude_Nil()))); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _4 ) => ("Decl:")), ( _4 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _5 ) => (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(decl))), Prelude_Lin()))), ( _5 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_$$0, decl), ( _6 ) => { const autoPat = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( acc ) => (( x ) => (Lib_Syntax_RApp(x.h2, acc, Lib_Syntax_RVar(_$$2.h2, x.h3.h2), 1))), Lib_Syntax_RVar(_$$2.h2, sc$$14.h3), fields); return Lib_ProcessDecl_processRecord_processFields(_$$0, _$$1, _$$2, _$$3, _$$4, _$$5, _$$2.h0, _$$2.h1, _$$2.h2, _$$2.h3, autoPat, tail, Prelude_Nil(), fields); }))))); }))); })))); -const Lib_ProcessDecl_processRecord_processFields = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _9, _$$11, _$$12, _$$13, _$$14 ) => { if ((_$$14.tag) == (1)) { const funType = Lib_Syntax_substRaw(_$$13, Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_3), Lib_Syntax_RPi(_$$14.h1.h2, Lib_Types_BI(_$$14.h1.h2, "$self", 1, true), _$$12, _$$14.h1.h3.h3))); const pname = (".") + (_$$14.h1.h3.h2); const lhs = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( acc ) => (( x ) => (Lib_Syntax_RApp(x.h2.h0, acc, Lib_Syntax_RVar(x.h2.h0, x.h2.h1), 0))), Lib_Syntax_RVar(_$$14.h1.h2, pname), _3); const lhs1 = Lib_Syntax_RApp(_1, lhs, _$$11, 1); const pdecl = Lib_Syntax_FunDef(_$$14.h1.h2, pname, Prelude__$3A$3A_(Prelude__$2C_(lhs1, Prelude_Just(Lib_Syntax_RVar(_$$14.h1.h2, _$$14.h1.h3.h2))), Prelude_Nil())); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _10 ) => ((((("") + (pname)) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(funType))), Prelude_Lin()))) + (""))), ( _10 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _11 ) => ((("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(pdecl))), Prelude_Lin()))) + (""))), ( _11 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_, Lib_Syntax_TypeSig(_$$14.h1.h2, Prelude__$3A$3A_(pname, Prelude_Nil()), funType)), ( _12 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_, pdecl), ( _13 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setFlag(Lib_Common_QN(_, pname), _$$14.h1.h2, true), ( _14 ) => { const deps = Prelude__$3A$3A_(Prelude__$2C_(_$$14.h1.h3.h2, Lib_Syntax_RApp(_$$14.h1.h2, Lib_Syntax_RVar(_$$14.h1.h2, pname), Lib_Syntax_RVar(_$$14.h1.h2, "$self"), 1)), _$$13); return Lib_ProcessDecl_processRecord_processFields(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _$$11, _$$12, deps, _$$14.h2); }))))))))); } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } }; +const Lib_ProcessDecl_processRecord_processFields = ( _, _1, _2, _3, _4, _5, _6, _7, _8, _9, _$$11, _$$12, _$$13, _$$14 ) => { if ((_$$14.tag) == (1)) { const funType = Lib_Syntax_substRaw(_$$13, Lib_ProcessDecl_teleToPi(Lib_ProcessDecl_impTele(_3), Lib_Syntax_RPi(_$$14.h1.h2, Lib_Types_BI(_$$14.h1.h2, "$self", 1, true), _$$12, _$$14.h1.h3.h3))); const pname = (".") + (_$$14.h1.h3.h2); const lhs = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( acc ) => (( x ) => (Lib_Syntax_RApp(x.h2.h0, acc, Lib_Syntax_RVar(x.h2.h0, x.h2.h1), 0))), Lib_Syntax_RVar(_$$14.h1.h2, pname), _3); const lhs1 = Lib_Syntax_RApp(_1, lhs, _$$11, 1); const pdecl = Lib_Syntax_FunDef(_$$14.h1.h2, pname, Prelude__$3A$3A_(Prelude__$2C_(lhs1, Prelude_Just(Lib_Syntax_RVar(_$$14.h1.h2, _$$14.h1.h3.h2))), Prelude_Nil())); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _10 ) => ((((("") + (pname)) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Raw$2Cpretty(funType))), Prelude_Lin()))) + (""))), ( _10 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(1, ( _11 ) => ((("") + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Syntax_Lib_Prettier_Pretty$20Lib_Syntax_Decl$2Cpretty(pdecl))), Prelude_Lin()))) + (""))), ( _11 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_, Lib_Syntax_TypeSig(_$$14.h1.h2, Prelude__$3A$3A_(pname, Prelude_Nil()), funType)), ( _12 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(_, pdecl), ( _13 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setFlag(Lib_Common_QN(_, pname), _$$14.h1.h2, 1), ( _14 ) => { const deps = Prelude__$3A$3A_(Prelude__$2C_(_$$14.h1.h3.h2, Lib_Syntax_RApp(_$$14.h1.h2, Lib_Syntax_RVar(_$$14.h1.h2, pname), Lib_Syntax_RVar(_$$14.h1.h2, "$self"), 1)), _$$13); return Lib_ProcessDecl_processRecord_processFields(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _$$11, _$$12, deps, _$$14.h2); }))))))))); } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0); } }; const Lib_Syntax_substRaw = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case 15: return Lib_Syntax_RUpdateRec(_$$1.h0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_substRaw_filter_filterBind_substUC(_$$0, _$$1, eta)), _$$1.h1), Prelude_Prelude_Functor$20Prelude_Maybe$2Cmap(( eta ) => (Lib_Syntax_substRaw(_$$0, eta)), _$$1.h2)); case 14: return Lib_Syntax_RAs(_$$1.h0, _$$1.h1, Lib_Syntax_substRaw(_$$0, _$$1.h2)); case 13: return Lib_Syntax_RWhere(_$$1.h0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_substRaw_filter_filterBind_substUC_substClause_substDecl(_$$0, _$$1, eta)), _$$1.h1), Lib_Syntax_substRaw(_$$0, _$$1.h2)); case 12: return Lib_Syntax_RIf(_$$1.h0, Lib_Syntax_substRaw(_$$0, _$$1.h1), Lib_Syntax_substRaw(_$$0, _$$1.h2), Lib_Syntax_substRaw(_$$0, _$$1.h3)); case 11: return Lib_Syntax_RDo(_$$1.h0, Lib_Syntax_substRaw_filter_filterBind_substUC_substClause_substDecl_substAlt_substStmts(_$$0, _$$1, _$$0, _$$1.h1)); case 10: return _$$1; case 9: return _$$1; case 8: return Lib_Syntax_RCase(_$$1.h0, Lib_Syntax_substRaw(_$$0, _$$1.h1), Prelude_Prelude_Functor$20Prelude_Maybe$2Cmap(( eta ) => (Lib_Syntax_substRaw(_$$0, eta)), _$$1.h2), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Syntax_substRaw_filter_filterBind_substUC_substClause_substDecl_substAlt(_$$0, _$$1, eta)), _$$1.h3)); case 7: return _$$1; case 6: return Lib_Syntax_RLet(_$$1.h0, _$$1.h1, Lib_Syntax_substRaw(_$$0, _$$1.h2), Lib_Syntax_substRaw(_$$0, _$$1.h3), Lib_Syntax_substRaw(_$$0, _$$1.h4)); case 5: return Lib_Syntax_RPi(_$$1.h0, _$$1.h1, Lib_Syntax_substRaw(_$$0, _$$1.h2), Lib_Syntax_substRaw(Lib_Syntax_substRaw_filter_filterBind(_$$0, _$$1, _$$1.h1, _$$0), _$$1.h3)); case 4: return _$$1; case 3: return _$$1; case 2: return Lib_Syntax_RApp(_$$1.h0, Lib_Syntax_substRaw(_$$0, _$$1.h1), Lib_Syntax_substRaw(_$$0, _$$1.h2), _$$1.h3); case 1: return Lib_Syntax_RLam(_$$1.h0, _$$1.h1, Lib_Syntax_substRaw(Lib_Syntax_substRaw_filter_filterBind(_$$0, _$$1, _$$1.h1, _$$0), _$$1.h2)); case 0: return Prelude_fromMaybe(_$$1, Data_List_lookup(Prelude_Prelude_Eq$20Prim_String, _$$1.h1, _$$0)); } }; const Data_List_lookup = ( _$$2, _$$3, _$$4 ) => (bouncer(Data_List_REC_lookup, { tag: 1, h0: null, h1: null, h2: _$$2, h3: _$$3, h4: _$$4 })); const Data_List_REC_lookup = ( arg ) => { if ((arg.h4.tag) == (1)) { const sc$$12 = Prelude__$3D$3D_(arg.h2)(arg.h4.h1.h2)(arg.h3); switch (sc$$12) { case true: return { tag: 0, h0: Prelude_Just(arg.h4.h1.h3) }; case false: return { tag: 1, h0: null, h1: null, h2: arg.h2, h3: arg.h3, h4: arg.h4.h2 }; } } else { return { tag: 0, h0: Prelude_Nothing() }; } }; @@ -643,17 +647,19 @@ const Lib_Syntax_RAs = ( h0, h1, h2 ) => ({ tag: 14, h0: h0, h1: h1, h2: h2 } const Lib_Syntax_substRaw_filter_filterBind_substUC = ( _, _1, _$$5 ) => (( (_$$5.tag) == (1) ? Lib_Syntax_ModifyField(_$$5.h0, _$$5.h1, Lib_Syntax_substRaw(_, _$$5.h2)) : Lib_Syntax_AssignField(_$$5.h0, _$$5.h1, Lib_Syntax_substRaw(_, _$$5.h2)) )); const Lib_Syntax_AssignField = ( h0, h1, h2 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2 }); const Lib_Syntax_ModifyField = ( h0, h1, h2 ) => ({ tag: 1, h0: h0, h1: h1, h2: h2 }); -const Lib_ProcessModule_addPrimitives = Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(Lib_Common_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "Int", Prelude_Nothing())), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(Lib_Common_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "String", Prelude_Nothing())), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(Lib_Common_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "Char", Prelude_Nothing())), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setDef(Lib_Common_QN(Lib_Common_primNS, "PiType"), Lib_Common_emptyFC, Lib_Types_Erased(Lib_Common_emptyFC), Lib_Types_PrimFn("(h0, h1) => ({ tag: \"PiType\", h0, h1 });", (1) + ((1) + (0)), Prelude_Nil()), Prelude_Nil()), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const mod = Lib_Types_MkModCtx("", top.h4, Lib_Types_MC(Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), Prelude_Nil(), 0, 0), top.h8, Prelude_Nil(), top.h7); const modules = Data_SortedMap_updateMap(Lib_Common_primNS, mod, top.h0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(modules, Prelude__$3A$3A_(Lib_Common_primNS, Prelude_Nil()), Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), "", Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), tc.h5, tc.h6, tc.h7, tc.h8)))), ( _4 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(mod))); }))))))))); +const Lib_ProcessDecl_processExports = ( _$$0, _$$1, _$$2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Prelude_traverse_(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_ProcessDecl_processExports_setExport(_$$0, _$$1, _$$2, top, eta)), _$$2)))); +const Lib_ProcessDecl_processExports_setExport = ( _, _1, _2, _$$4, _$$5 ) => { const sc$$10 = Lib_TopContext_lookupRaw(_$$5.h3, _$$4); return ( (sc$$10.tag) == (0) ? Lib_TopContext_setFlag(sc$$10.h1.h1, _$$5.h2, 2) : Lib_Types_MkM(( _3 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$5.h2, (("") + (_$$5.h3)) + (" not in scope"))), eta)))) ); }; +const Prelude_traverse_ = ( _$$4, _$$5, _$$6, _$$7 ) => (Prelude__$3C$2A$3E_(_$$5)(null)(null)(Prelude_return(_$$5)(null)(( _$$3 ) => (0)))(Prelude_traverse(_$$4)(null)(null)(null)(_$$5)(_$$6)(_$$7))); +const Lib_ProcessModule_addPrimitives = Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(Lib_Common_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "Int", Prelude_Nothing())), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(Lib_Common_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "String", Prelude_Nothing())), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_processDecl(Lib_Common_primNS, Lib_Syntax_PType(Lib_Common_emptyFC, "Char", Prelude_Nothing())), ( _2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_setDef(Lib_Common_QN(Lib_Common_primNS, "PiType"), Lib_Common_emptyFC, Lib_Types_Erased(Lib_Common_emptyFC), Lib_Types_PrimFn("(h0, h1) => ({ tag: \"PiType\", h0, h1 });", (1) + ((1) + (0)), Prelude_Nil()), Prelude_Nil()), ( _3 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const mod = Lib_Types_MkModCtx("", top.h5, Lib_Types_MC(Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), Prelude_Nil(), 0, 0), top.h9, Prelude_Nil(), top.h8, Prelude_Nil()); const modules = Data_SortedMap_updateMap(Lib_Common_primNS, mod, top.h0); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(modules, Prelude__$3A$3A_(Lib_Common_primNS, Prelude_Nil()), Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), tc.h3, "", Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), tc.h6, tc.h7, tc.h8, tc.h9)))), ( _4 ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(mod))); }))))))))); const Data_SortedMap_listValues = ( _$$2 ) => (Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$21 ) => (_$$21.h3), Data_SortedMap_toList(_$$2))); const Lib_ProcessDecl_logMetas = ( _$$0 ) => (bouncer(Lib_ProcessDecl_REC_logMetas, { tag: 1, h0: _$$0 })); const Lib_ProcessDecl_REC_logMetas = ( arg ) => { if ((arg.h0.tag) == (1)) { switch (arg.h0.h1.tag) { case 2: return { tag: 1, h0: arg.h0.h2 }; case 1: return { tag: 1, h0: arg.h0.h2 }; case 0: switch (arg.h0.h1.h4) { case 1: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(arg.h0.h1.h2.h0, arg.h0.h1.h3), ( ty$27 ) => { const names = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), arg.h0.h1.h2.h2); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_ProcessDecl_dumpEnv(arg.h0.h1.h2), ( env ) => { const msg = (((("") + (env)) + ("\n -----------\n ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, names, ty$27))), Prelude_Lin()))) + (""); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_info(arg.h0.h1.h0, (("User Hole\n") + (msg)) + ("")), ( _ ) => (Lib_ProcessDecl_logMetas(arg.h0.h2))); }); }) }; default: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_forceMeta(arg.h0.h1.h3), ( ty$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(arg.h0.h1.h2.h0, ty$27), ( tm ) => { const msg = (((((((("Unsolved meta ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(arg.h0.h1.h1))) + (" ")) + (Lib_Types_Prelude_Show$20Lib_Types_MetaKind$2Cshow(arg.h0.h1.h4))) + (" type ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), arg.h0.h1.h2.h2), tm))), Prelude_Lin()))) + (" ")) + (Prelude_showInt(Prelude_length$27(arg.h0.h1.h5)))) + (" constraints"); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, arg.h0.h1.h5, ( $$case ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(((((((" * (m") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(arg.h0.h1.h1))) + (" (")) + (Prelude_joinBy(" ", Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(eta)), Prelude__$3C$3E$3E_($$case.h2, Prelude_Nil()))))) + (") =?= ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow($$case.h3))) + ("")))), ( msgs ) => { switch (arg.h0.h1.h4) { case 2: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(arg.h0.h1.h2.h0, arg.h0.h1.h3), ( x ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(arg.h0.h1.h2.h1, x), ( ty ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((("AUTO ---> ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(ty))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { if ((ty.tag) == (1)) { const cands = Prelude_fromMaybe(Prelude_Nil(), Data_SortedMap_lookupMap$27(ty.h1, top.h2)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Elab_findMatches(arg.h0.h1.h2, ty, cands), ( matches ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$3A$3A_(((((" ") + (Prelude_showInt(Prelude_length$27(matches)))) + (" Solutions: ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Common_Prelude_Show$20Lib_Common_QName, matches))) + (""), Prelude_Nil())))); } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nil()); } }))))))), ( sols ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_addError(Lib_Common_E(arg.h0.h1.h0, Prelude_joinBy("\n", Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(Prelude__$3A$3A_(msg, Prelude_Nil()), Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(msgs, sols))))), ( _ ) => (Lib_ProcessDecl_logMetas(arg.h0.h2))))); default: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nil()), ( sols ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_addError(Lib_Common_E(arg.h0.h1.h0, Prelude_joinBy("\n", Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(Prelude__$3A$3A_(msg, Prelude_Nil()), Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(msgs, sols))))), ( _ ) => (Lib_ProcessDecl_logMetas(arg.h0.h2))))); } }); }))) }; } break; } } else { return { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) }; } }; -const Lib_TopContext_addError = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, tc.h6, Prelude__$3A$3A_(_$$0, tc.h7), tc.h8))))))); const Lib_ProcessDecl_dumpEnv = ( _$$0 ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( _$$5 ) => (Prelude_joinBy("\n", Prelude_reverse()(_$$5))), Lib_ProcessDecl_dumpEnv_isVar_go(_$$0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h2), _$$0.h2), 0, Prelude_reverse()(Prelude_zip(_$$0.h1, _$$0.h2)), Prelude_Nil()))); const Lib_ProcessDecl_dumpEnv_isVar_go = ( _, _$$3, _$$4, _$$5, _$$6 ) => { if ((_$$5.tag) == (1)) { const sc$$18 = Lib_ProcessDecl_dumpEnv_isVar(_, _$$4, _$$5.h1.h2); switch (sc$$18) { case true: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_.h0, _$$5.h1.h3.h3), ( ty$27 ) => (Lib_ProcessDecl_dumpEnv_isVar_go(_, _$$3, (1) + (_$$4), _$$5.h2, Prelude__$3A$3A_(((((" ") + (_$$5.h1.h3.h2)) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, _$$3, ty$27))), Prelude_Lin()))) + (""), _$$6)))); case false: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_.h0, _$$5.h1.h2), ( v$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_.h0, _$$5.h1.h3.h3), ( ty$27 ) => (Lib_ProcessDecl_dumpEnv_isVar_go(_, _$$3, (1) + (_$$4), _$$5.h2, Prelude__$3A$3A_(((((((" ") + (_$$5.h1.h3.h2)) + (" = ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, _$$3, v$27))), Prelude_Lin()))) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, _$$3, ty$27))), Prelude_Lin()))) + (""), _$$6)))))); } } else { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(_$$6); } }; const Lib_ProcessDecl_dumpEnv_isVar = ( _, _$$2, _$$3 ) => (( (_$$3.tag) == (0) ? ( (_$$3.h2.tag) == (0) ? (_$$2) == (_$$3.h1) : false ) : false )); const Lib_ProcessModule_processModule_tryProcessDecl = ( _, _1, _2, _3, _$$5, _$$6, _$$7 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_tryError(Lib_ProcessDecl_processDecl(_$$6, _$$7)), ( $$sc ) => (( ($$sc.tag) == (0) ? Lib_TopContext_addError($$sc.h2) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) )))); -const Lib_ProcessModule_importHints = ( _$$0 ) => (( (_$$0.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_elem(Lib_Types_Prelude_Eq$20Lib_Types_EFlag, false, _$$0.h1.h4), ( _ ) => (Lib_TopContext_addHint(_$$0.h1.h1))), ( _ ) => (Lib_ProcessModule_importHints(_$$0.h2))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) )); -const Lib_Types_Prelude_Eq$20Lib_Types_EFlag$2C_$3D$3D_ = ( _$$0, _$$1 ) => { switch (_$$1) { case true: switch (_$$0) { case true: return true; default: return false; } break; case false: switch (_$$0) { case false: return true; default: return false; } break; } }; +const Lib_ProcessModule_importHints = ( _$$0 ) => (( (_$$0.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_elem(Lib_Types_Prelude_Eq$20Lib_Types_EFlag, 0, _$$0.h1.h4), ( _ ) => (Lib_TopContext_addHint(_$$0.h1.h1))), ( _ ) => (Lib_ProcessModule_importHints(_$$0.h2))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) )); +const Lib_Types_Prelude_Eq$20Lib_Types_EFlag$2C_$3D$3D_ = ( _$$0, _$$1 ) => { switch (_$$1) { case 2: switch (_$$0) { case 2: return true; default: return false; } break; case 1: switch (_$$0) { case 1: return true; default: return false; } break; case 0: switch (_$$0) { case 0: return true; default: return false; } break; } }; const Lib_Types_Prelude_Eq$20Lib_Types_EFlag = Prelude_MkEq(( eta ) => (( eta1 ) => (Lib_Types_Prelude_Eq$20Lib_Types_EFlag$2C_$3D$3D_(eta, eta1)))); const Lib_ProcessModule_parseDecls = ( _$$0, _$$1, _$$2, _$$3 ) => (bouncer(Lib_ProcessModule_REC_parseDecls, { tag: 1, h0: _$$0, h1: _$$1, h2: _$$2, h3: _$$3 })); const Lib_ProcessModule_REC_parseDecls = ( arg ) => { if ((arg.h2.tag) == (1)) { const sc$$8 = Lib_Parser_Impl_partialParse(arg.h0, Lib_Parser_Impl_sameLevel(Lib_Parser_parseDecl), arg.h1, arg.h2); return ( (sc$$8.tag) == (1) ? { tag: 1, h0: arg.h0, h1: sc$$8.h2.h3.h2, h2: sc$$8.h2.h3.h3, h3: Prelude__$3A$3C_(arg.h3, sc$$8.h2.h2) } : { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TopContext_addError(sc$$8.h2.h2), ( _ ) => (Lib_ProcessModule_parseDecls(arg.h0, arg.h1, Lib_ProcessModule_parseDecls_recover(arg.h0, arg.h1, arg.h2, arg.h3, arg.h2.h0, arg.h2.h1, arg.h2.h2, sc$$8.h2.h3), arg.h3))) } ); } else { return { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Prelude__$3C$3E$3E_(arg.h3, Prelude_Nil()), arg.h1)) }; } }; @@ -663,7 +669,7 @@ const Lib_Common_Prelude_Eq$20Lib_Common_Bounds$2C_$3D$3D_ = ( _$$0, _$$1 ) => ( const Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn = ( _$$1 ) => (Lib_Parser_Impl_P(( last ) => (( toks ) => (( com ) => (( ops ) => (( col ) => (Lib_Parser_Impl_OK(_$$1, last, toks, com, ops)))))))); const Lib_Parser_Impl_OK = ( h1, h2, h3, h4, h5 ) => ({ tag: 0, h1: h1, h2: h2, h3: h3, h4: h4, h5: h5 }); const Lib_Parser_Impl_P = ( h1 ) => ({ tag: 0, h1: h1 }); -const Lib_Parser_Impl_keyword$27 = ( _$$0 ) => (Lib_Parser_Impl_Prelude_Functor$20Lib_Parser_Impl_Parser$2Cmap(( _$$3 ) => (0), Lib_Parser_Impl_satisfy(( t ) => (((t.h1.h1) == (_$$0)) && (((Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(t.h1.h0)) == (Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(2))) || (((Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(t.h1.h0)) == (Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(8))) || ((Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(t.h1.h0)) == (Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(4)))))), (("Expected '") + (_$$0)) + ("'")))); +const Lib_Parser_Impl_keyword$27 = ( _$$0 ) => (Lib_Parser_Impl_Prelude_Functor$20Lib_Parser_Impl_Parser$2Cmap(( _$$3 ) => (0), Lib_Parser_Impl_satisfy(( t ) => (((t.h1.h1) == (_$$0)) && (((Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(t.h1.h0)) == (Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(2))) || (((Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(t.h1.h0)) == (Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(8))) || (((Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(t.h1.h0)) == (Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(4))) || ((Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(t.h1.h0)) == (Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(11))))))), (("Expected '") + (_$$0)) + ("'")))); const Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow = ( _$$0 ) => { switch (_$$0) { case 20: return "EndInterp"; case 19: return "StartInterp"; case 18: return "EndQuote"; case 17: return "StartQuote"; case 16: return "EOI"; case 15: return "RBrace"; case 14: return "Semi"; case 13: return "LBrace"; case 12: return "Projection"; case 11: return "Pragma"; case 10: return "Comment"; case 9: return "Space"; case 8: return "Symbol"; case 7: return "JSLit"; case 6: return "String"; case 5: return "Character"; case 4: return "Number"; case 3: return "MixFix"; case 2: return "Keyword"; case 1: return "UIdent"; case 0: return "Ident"; } }; const Lib_Parser_Impl_satisfy = ( _$$0, _$$1 ) => (Lib_Parser_Impl_P(( last ) => (( toks ) => (( com ) => (( ops ) => (( col ) => { if ((toks.tag) == (1)) { const sc$$11 = _$$0(toks.h1); switch (sc$$11) { case true: return Lib_Parser_Impl_OK(toks.h1.h1.h1, toks.h1.h2, toks.h2, true, ops); case false: return Lib_Parser_Impl_Fail(Lib_Parser_Impl_perror(col.h0, toks, (((((("") + (_$$1)) + (" at ")) + (Lib_Token_Prelude_Show$20Lib_Token_Kind$2Cshow(toks.h1.h1.h0))) + (":")) + (toks.h1.h1.h1)) + ("")), last, toks, com, ops); } } else { return Lib_Parser_Impl_Fail(Lib_Parser_Impl_perror(col.h0, toks, (("") + (_$$1)) + (" at EOF")), last, toks, com, ops); } })))))); const Lib_Parser_Impl_perror = ( _$$0, _$$1, _$$2 ) => (( (_$$1.tag) == (1) ? Lib_Common_E(Lib_Common_MkFC(_$$0, _$$1.h1.h2), _$$2) : Lib_Common_E(Lib_Common_MkFC(_$$0, Lib_Common_MkBounds(0, 0, 0, 0)), _$$2) )); @@ -737,7 +743,6 @@ const Lib_Parser_Impl_sepBy = ( _$$2, _$$3 ) => (Lib_Parser_Impl_Prelude_Applica const Lib_Syntax_RImpossible = ( h0 ) => ({ tag: 4, h0: h0 }); const Lib_Parser_parenTypeExp = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( fc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("(")), ( _ ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( fc$27 ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_optional(Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27(")"))), ( $$sc ) => (( ($$sc.tag) == (1) ? Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_typeExpr, ( t ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27(")")), ( _1 ) => (Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(t))))) : Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Lib_Syntax_RImpossible(Lib_Common_MkFC(fc.h0, Lib_Common_Prelude_Add$20Lib_Common_Bounds$2C_$2B_(fc.h1, fc$27.h1)))) ))))))))); const Lib_Syntax_RHole = ( h0 ) => ({ tag: 10, h0: h0 }); -const Prelude_strIndex = (s, ix) => s[ix]; const Lib_Syntax_RLit = ( h0, h1 ) => ({ tag: 7, h0: h0, h1: h1 }); const Lib_Parser_charLit = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( fc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_indented(Lib_Parser_Impl_token$27(5)), ( v ) => (Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Lib_Syntax_RLit(fc, Lib_Types_LChar(Prelude_strIndex(v, 0)))))))); const Lib_Parser_stringLit = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( fc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_indented(Lib_Parser_Impl_token$27(6)), ( t ) => (Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Lib_Syntax_RLit(fc, Lib_Types_LString(t))))))); @@ -774,10 +779,12 @@ const Lib_Parser_parseSig = Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Imp const Lib_Parser_getName = ( _$$0 ) => (bouncer(Lib_Parser_REC_getName, { tag: 1, h0: _$$0 })); const Lib_Parser_REC_getName = ( arg ) => { switch (arg.h0.tag) { case 2: return { tag: 1, h0: arg.h0.h1 }; case 0: return { tag: 0, h0: Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(arg.h0.h1) }; default: return { tag: 0, h0: Lib_Parser_Impl_fail("bad LHS") }; } }; const Lib_Parser_parseDef = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( fc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_typeExpr, ( t ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_getName(t), ( nm ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_optional(Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("="))), ( $$sc ) => (( ($$sc.tag) == (1) ? Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Lib_Syntax_FunDef(fc, nm, Prelude__$3A$3A_(Prelude__$2C_(t, Prelude_Nothing()), Prelude_Nil()))) : Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_typeExpr, ( body ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( wfc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_optional(Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("where")), ( _ ) => (Lib_Parser_Impl_startBlock(Lib_Parser_Impl_many(Lib_Parser_Impl_sameLevel(Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseSig, Lib_Parser_parseDef))))))), ( w ) => { const body1 = Prelude_maybe(body, ( decls ) => (Lib_Syntax_RWhere(wfc, decls, body)), w); return Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Lib_Syntax_FunDef(fc, nm, Prelude__$3A$3A_(Prelude__$2C_(t, Prelude_Just(body1)), Prelude_Nil()))); }))))) ))))))))); -const Lib_Syntax_Record = ( h0, h1, h2, h3, h4 ) => ({ tag: 10, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); +const Lib_Syntax_Exports = ( h0, h1 ) => ({ tag: 11, h0: h0, h1: h1 }); const Lib_Parser_Impl_withFC = ( _$$1 ) => (Lib_Parser_Impl_P(( last ) => (( toks ) => (( com ) => (( ops ) => (( indent ) => { const sc$$7 = Lib_Parser_Impl_runP(_$$1)(last)(toks)(com)(ops)(indent); return ( (sc$$7.tag) == (1) ? Lib_Parser_Impl_Fail(sc$$7.h1, sc$$7.h2, sc$$7.h3, sc$$7.h4, sc$$7.h5) : Lib_Parser_Impl_OK(Prelude__$2C_(Lib_Common_MkFC(indent.h0, Lib_Common_Prelude_Add$20Lib_Common_Bounds$2C_$2B_(Lib_Parser_Impl_tokStart(toks), sc$$7.h2)), sc$$7.h1), sc$$7.h2, sc$$7.h3, sc$$7.h4, sc$$7.h5) ); })))))); const Lib_Parser_Impl_tokStart = ( _$$0 ) => (( (_$$0.tag) == (1) ? _$$0.h1.h2 : Lib_Common_emptyBounds )); const Lib_Common_emptyBounds = Lib_Common_MkBounds(0, 0, 0, 0); +const Lib_Parser_parseExport = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( loc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("#export")), ( _ ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_many(Lib_Parser_Impl_withFC(Lib_Parser_ident)), ( $$sc ) => (Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Lib_Syntax_Exports(loc, $$sc)))))))); +const Lib_Syntax_Record = ( h0, h1, h2, h3, h4 ) => ({ tag: 10, h0: h0, h1: h1, h2: h2, h3: h3, h4: h4 }); const Lib_Parser_nakedBind_makeBind = ( _$$1 ) => (Prelude__$2C_(Lib_Types_BI(_$$1.h2, _$$1.h3, 1, true), Lib_Syntax_RImplicit(_$$1.h2))); const Lib_Parser_nakedBind = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_some(Lib_Parser_addPos(Lib_Parser_varname)), ( $$sc ) => (Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Parser_nakedBind_makeBind(eta)), $$sc)))); const Lib_Parser_parseRecord = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( fc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("record")), ( _ ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_withFC(Lib_Parser_uident), ( name ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_many(Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_ebind, Lib_Parser_nakedBind)), ( teles ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("where")), ( _1 ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_optional(Prelude__$2A$3E_(Lib_Parser_Impl_Prelude_Functor$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser, Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("constructor")), Lib_Parser_Impl_withFC(Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_uident, Lib_Parser_Impl_indented(Lib_Parser_Impl_token$27(3)))))), ( cname ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_startBlock(Lib_Parser_Impl_many(Lib_Parser_Impl_sameLevel(Lib_Parser_parseSig))), ( decls ) => (Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Lib_Syntax_Record(fc, name, Prelude_Prelude_Monad$20Prelude_List$2Cbind(teles, ( _$$1 ) => (_$$1)), cname, decls)))))))))))))))); @@ -804,19 +811,19 @@ const Prelude_split = (s, by) => { return rval }; const Lib_Parser_parseMixfix = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( fc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Prelude__$3C$$_(Lib_Parser_Impl_Prelude_Functor$20Lib_Parser_Impl_Parser, 0, Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("infixl"))), Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Prelude__$3C$$_(Lib_Parser_Impl_Prelude_Functor$20Lib_Parser_Impl_Parser, 1, Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("infixr"))), Prelude__$3C$$_(Lib_Parser_Impl_Prelude_Functor$20Lib_Parser_Impl_Parser, 2, Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("infix"))))), ( fix ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_indented(Lib_Parser_Impl_token$27(4)), ( prec ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_some(Lib_Parser_Impl_indented(Lib_Parser_Impl_token$27(3))), ( ops ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Prelude_for(Prelude_Prelude_Traversable$20Prelude_List, Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser, ops, ( op ) => (Lib_Parser_Impl_addOp(op, Prelude_stringToInt(prec), fix))), ( _ ) => (Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Lib_Syntax_PMixFix(fc, ops, Prelude_stringToInt(prec), fix)))))))))))); -const Lib_Parser_parseDecl = Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseMixfix, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parsePType, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parsePFunc, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseNorm, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseData, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseShortData, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseClass, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseInstance, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseRecord, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseSig, Lib_Parser_parseDef)))))))))); +const Lib_Parser_parseDecl = Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseMixfix, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parsePType, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parsePFunc, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseNorm, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseData, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseShortData, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseClass, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseInstance, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseRecord, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseExport, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_parseSig, Lib_Parser_parseDef))))))))))); const Lib_Parser_Impl_partialParse = ( _$$1, _$$2, _$$3, _$$4 ) => { const sc$$5 = Lib_Parser_Impl_runP(_$$2)(Lib_Common_emptyBounds)(_$$4)(false)(_$$3)(Lib_Common_MkFC(_$$1, Lib_Common_MkBounds(0, 0, 0, 0))); return ( (sc$$5.tag) == (1) ? Prelude_Left(Prelude__$2C_(sc$$5.h1, sc$$5.h3)) : Prelude_Right(Prelude__$2C_(sc$$5.h1, Prelude__$2C_(sc$$5.h5, sc$$5.h3))) ); }; const Lib_Syntax_MkImport = ( h0, h1 ) => ({ tag: 0, h0: h0, h1: h1 }); const Lib_Parser_parseImport = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( fc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("import")), ( _ ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_withFC(Lib_Parser_uident), ( $$sc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_withFC(Lib_Parser_Impl_many(Lib_Parser_Impl_indented(Lib_Parser_Impl_token$27(12)))), ( $$sc1 ) => { const name = Prelude_joinBy("", Prelude__$3A$3A_($$sc.h3, $$sc1.h3)); return Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Lib_Syntax_MkImport(fc, Prelude__$2C_(Lib_Common_MkFC($$sc.h2.h0, Lib_Common_Prelude_Add$20Lib_Common_Bounds$2C_$2B_($$sc.h2.h1, $$sc1.h2.h1)), name))); }))))))); const Lib_Parser_parseImports = Lib_Parser_Impl_many(Lib_Parser_Impl_sameLevel(Lib_Parser_parseImport)); const Lib_Parser_parseModHeader = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_sameLevel(Lib_Parser_Impl_indented(Lib_Parser_Impl_keyword$27("module"))), ( _ ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_getPos, ( fc ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_uident, ( name ) => (Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_Impl_many(Lib_Parser_Impl_indented(Lib_Parser_Impl_token$27(12))), ( rest ) => { const name1 = Prelude_joinBy("", Prelude__$3A$3A_(name, rest)); return Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(Prelude__$2C_(fc, name1)); }))))))); -const Lib_Tokenizer_tokenise = ( _$$0, _$$1 ) => { const sc$$2 = Lib_Tokenizer_rawTokenise(Lib_Tokenizer_TS(0, 0, Prelude_Lin(), Prelude_unpack(_$$1))); return ( (sc$$2.tag) == (1) ? ( (sc$$2.h2.h3.tag) == (0) ? Prelude_Right(Prelude__$3C$3E$3E_(sc$$2.h2.h2, Prelude_Nil())) : Prelude_Left(Lib_Common_E(Lib_Common_MkFC(_$$0, Lib_Common_MkBounds(sc$$2.h2.h0, sc$$2.h2.h1, sc$$2.h2.h0, sc$$2.h2.h1)), "Extra toks")) ) : ( (sc$$2.h2.tag) == (0) ? Prelude_Left(Lib_Common_E(Lib_Common_MkFC(_$$0, sc$$2.h2.h0.h1), sc$$2.h2.h1)) : Prelude_Left(sc$$2.h2) ) ); }; +const Lib_Tokenizer_tokenise = ( _$$0, _$$1 ) => { const sc$$2 = Lib_Tokenizer_rawTokenise(Lib_Tokenizer_TS(0, 0, Prelude_Lin(), Prelude_unpack(_$$1))); return ( (sc$$2.tag) == (1) ? ( (sc$$2.h2.h3.tag) == (0) ? Prelude_Right(Prelude__$3C$3E$3E_(sc$$2.h2.h2, Prelude_Nil())) : Prelude_Left(Lib_Common_E(Lib_Common_MkFC(_$$0, Lib_Common_MkBounds(sc$$2.h2.h0, sc$$2.h2.h1, sc$$2.h2.h0, (sc$$2.h2.h1) + (1))), "Extra toks")) ) : ( (sc$$2.h2.tag) == (0) ? Prelude_Left(Lib_Common_E(Lib_Common_MkFC(_$$0, sc$$2.h2.h0.h1), sc$$2.h2.h1)) : Prelude_Left(sc$$2.h2) ) ); }; const Lib_Tokenizer_TS = ( h0, h1, h2, h3 ) => ({ tag: 0, h0: h0, h1: h1, h2: h2, h3: h3 }); const Lib_Tokenizer_rawTokenise = ( _$$0 ) => (bouncer(Lib_Tokenizer_REC_rawTokenise, { tag: 1, h0: _$$0 })); -const Lib_Tokenizer_REC_rawTokenise = ( arg ) => { switch (arg.tag) { case 1: { if ((arg.h0.h3.tag) == (1)) { switch (arg.h0.h3.h1) { case " ": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, arg.h0.h3.h2) }; case "\n": return { tag: 1, h0: Lib_Tokenizer_TS((arg.h0.h0) + (1), 0, arg.h0.h2, arg.h0.h3.h2) }; case "\"": { const tok = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (1), 17, "\""); const sc$$18 = Lib_Tokenizer_quoteTokenise(Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), Prelude__$3A$3C_(arg.h0.h2, tok), arg.h0.h3.h2), arg.h0.h0, (arg.h0.h1) + (1), Prelude_Lin()); if ((sc$$18.tag) == (1)) { if ((sc$$18.h2.h3.tag) == (1)) { switch (sc$$18.h2.h3.h1) { case "\"": { const tok1 = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, sc$$18.h2.h0, (sc$$18.h2.h1) + (1), 18, "\""); return { tag: 1, h0: Lib_Tokenizer_TS(sc$$18.h2.h0, (sc$$18.h2.h1) + (1), Prelude__$3A$3C_(sc$$18.h2.h2, tok1), sc$$18.h2.h3.h2) }; break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$18.h2.h0, sc$$18.h2.h1, sc$$18.h2.h0, sc$$18.h2.h1)), "Expected '\"'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$18.h2.h0, sc$$18.h2.h1, sc$$18.h2.h0, sc$$18.h2.h1)), "Expected '\"'")) }; } } else { return { tag: 0, h0: Prelude_Left(sc$$18.h2) }; } break; } case "}": return { tag: 0, h0: Prelude_Right(arg.h0) }; case "{": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case "{": { const tok = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (2), 2, "{{"); const sc$$21 = Lib_Tokenizer_rawTokenise(Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), Prelude__$3A$3C_(arg.h0.h2, tok), arg.h0.h3.h2.h2)); if ((sc$$21.tag) == (1)) { if ((sc$$21.h2.h3.tag) == (1)) { switch (sc$$21.h2.h3.h1) { case "}": { if ((sc$$21.h2.h3.h2.tag) == (1)) { switch (sc$$21.h2.h3.h2.h1) { case "}": { const tok1 = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, sc$$21.h2.h0, (sc$$21.h2.h1) + (2), 2, "}}"); return { tag: 1, h0: Lib_Tokenizer_TS(sc$$21.h2.h0, (sc$$21.h2.h1) + (2), Prelude__$3A$3C_(sc$$21.h2.h2, tok1), sc$$21.h2.h3.h2.h2) }; break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, sc$$21.h2.h1)), "Expected '}}'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, sc$$21.h2.h1)), "Expected '}}'")) }; } break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, sc$$21.h2.h1)), "Expected '}}'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, sc$$21.h2.h1)), "Expected '}}'")) }; } } else { return { tag: 0, h0: Prelude_Left(sc$$21.h2) }; } break; } default: { const tok = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (1), 8, "{"); const sc$$21 = Lib_Tokenizer_rawTokenise(Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), Prelude__$3A$3C_(arg.h0.h2, tok), arg.h0.h3.h2)); if ((sc$$21.tag) == (1)) { if ((sc$$21.h2.h3.tag) == (1)) { switch (sc$$21.h2.h3.h1) { case "}": { const tok1 = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, sc$$21.h2.h0, (sc$$21.h2.h1) + (1), 8, "}"); return { tag: 1, h0: Lib_Tokenizer_TS(sc$$21.h2.h0, (sc$$21.h2.h1) + (1), Prelude__$3A$3C_(sc$$21.h2.h2, tok1), sc$$21.h2.h3.h2) }; break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, sc$$21.h2.h1)), "Expected '}'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, sc$$21.h2.h1)), "Expected '}'")) }; } } else { return { tag: 0, h0: Prelude_Left(sc$$21.h2) }; } break; } } } else { const tok = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (1), 8, "{"); const sc$$18 = Lib_Tokenizer_rawTokenise(Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), Prelude__$3A$3C_(arg.h0.h2, tok), arg.h0.h3.h2)); if ((sc$$18.tag) == (1)) { if ((sc$$18.h2.h3.tag) == (1)) { switch (sc$$18.h2.h3.h1) { case "}": { const tok1 = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, sc$$18.h2.h0, (sc$$18.h2.h1) + (1), 8, "}"); return { tag: 1, h0: Lib_Tokenizer_TS(sc$$18.h2.h0, (sc$$18.h2.h1) + (1), Prelude__$3A$3C_(sc$$18.h2.h2, tok1), sc$$18.h2.h3.h2) }; break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$18.h2.h0, sc$$18.h2.h1, sc$$18.h2.h0, sc$$18.h2.h1)), "Expected '}'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$18.h2.h0, sc$$18.h2.h1, sc$$18.h2.h0, sc$$18.h2.h1)), "Expected '}'")) }; } } else { return { tag: 0, h0: Prelude_Left(sc$$18.h2) }; } } break; } case ",": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (1), 0, ",")), arg.h0.h3.h2) }; case "_": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case ",": { if ((arg.h0.h3.h2.h2.tag) == (1)) { switch (arg.h0.h3.h2.h2.h1) { case "_": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (3), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (3), 3, "_,_")), arg.h0.h3.h2.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } case ".": { if ((arg.h0.h3.h2.h2.tag) == (1)) { switch (arg.h0.h3.h2.h2.h1) { case "_": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (3), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (3), 3, "_._")), arg.h0.h3.h2.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } case "'": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case "\\": { if ((arg.h0.h3.h2.h2.tag) == (1)) { if ((arg.h0.h3.h2.h2.h2.tag) == (1)) { switch (arg.h0.h3.h2.h2.h2.h1) { case "'": { let ch; switch (arg.h0.h3.h2.h2.h1) { case "n": { ch = "\n"; break; } case "t": { ch = Prelude_chr(9); break; } default: { ch = arg.h0.h3.h2.h2.h1; break; } } return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (4), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (4), 5, Prelude_pack(Prelude__$3A$3A_(ch, Prelude_Nil())))), arg.h0.h3.h2.h2.h2.h2) }; break; } default: switch (arg.h0.h3.h2.h2.h1) { case "'": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (3), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (3), 5, Prelude_pack(Prelude__$3A$3A_(arg.h0.h3.h2.h1, Prelude_Nil())))), arg.h0.h3.h2.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } } else { switch (arg.h0.h3.h2.h2.h1) { case "'": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (3), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (3), 5, Prelude_pack(Prelude__$3A$3A_(arg.h0.h3.h2.h1, Prelude_Nil())))), arg.h0.h3.h2.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } default: { if ((arg.h0.h3.h2.h2.tag) == (1)) { switch (arg.h0.h3.h2.h2.h1) { case "'": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (3), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (3), 5, Prelude_pack(Prelude__$3A$3A_(arg.h0.h3.h2.h1, Prelude_Nil())))), arg.h0.h3.h2.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } case "#": return { tag: 3, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, arg.h0.h3.h2), h13: 11, h14: ( eta ) => (Lib_Tokenizer_rawTokenise_isIdent(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, eta)), h15: Prelude__$3A$3C_(Prelude_Lin(), "#") }; case "/": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case "-": return { tag: 4, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), arg.h0.h2, arg.h0.h3.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } case "`": return { tag: 5, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, arg.h0.h3.h2), h9: Prelude_Lin() }; case ".": return { tag: 3, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, arg.h0.h3.h2), h13: 12, h14: ( eta ) => (Lib_Tokenizer_rawTokenise_isIdent(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, eta)), h15: Prelude__$3A$3C_(Prelude_Lin(), ".") }; case "-": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case "-": return { tag: 6, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), arg.h0.h2, arg.h0.h3.h2.h2) }; default: { const sc$$20 = Prelude_isDigit(arg.h0.h3.h2.h1); switch (sc$$20) { case true: return { tag: 3, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), arg.h0.h2, arg.h0.h3.h2.h2), h13: 4, h14: ( eta ) => (Prelude_isDigit(eta)), h15: Prelude__$3A$3C_(Prelude__$3A$3C_(Prelude_Lin(), "-"), arg.h0.h3.h2.h1) }; case false: return { tag: 3, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, Prelude__$3A$3A_(arg.h0.h3.h2.h1, arg.h0.h3.h2.h2)), h13: 0, h14: ( eta ) => (Lib_Tokenizer_rawTokenise_isIdent(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, eta)), h15: Prelude__$3A$3C_(Prelude_Lin(), "-") }; } break; } } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 0, h0: Prelude_Right(arg.h0) }; } break; } case 2: { const sc$$15 = Prelude_elem(Prelude_Prelude_Eq$20Prim_Char, arg.h13, Lib_Tokenizer_standalone); switch (sc$$15) { case true: return { tag: 1, h0: Lib_Tokenizer_TS(arg.h1, (arg.h2) + (1), Prelude__$3A$3C_(arg.h3, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, true, arg.h1, (arg.h2) + (1), 8, Prelude_pack(Prelude__$3A$3A_(arg.h13, Prelude_Nil())))), arg.h14) }; case false: { let kind; const sc$$16 = Prelude_isDigit(arg.h13); switch (sc$$16) { case true: { kind = 4; break; } case false: { const sc$$17 = Prelude_isUpper(arg.h13); switch (sc$$17) { case true: { kind = 1; break; } case false: { kind = 0; break; } } break; } } return { tag: 3, 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: Lib_Tokenizer_TS(arg.h1, arg.h2, arg.h3, Prelude__$3A$3A_(arg.h13, arg.h14)), h13: kind, h14: ( eta ) => (Lib_Tokenizer_rawTokenise_isIdent(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, eta)), h15: Prelude_Lin() }; break; } } break; } case 3: { if ((arg.h12.h3.tag) == (1)) { const sc$$23 = arg.h14(arg.h12.h3.h1); switch (sc$$23) { case true: return { tag: 3, 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: Lib_Tokenizer_TS(arg.h12.h0, (arg.h12.h1) + (1), arg.h12.h2, arg.h12.h3.h2), h13: arg.h13, h14: arg.h14, h15: Prelude__$3A$3C_(arg.h15, arg.h12.h3.h1) }; case false: { let kind; const sc$$24 = Data_SnocList_snocelem(Prelude_Prelude_Eq$20Prim_Char, "_", arg.h15); switch (sc$$24) { case true: { kind = 3; break; } case false: { kind = arg.h13; break; } } return { tag: 1, h0: Lib_Tokenizer_TS(arg.h12.h0, arg.h12.h1, Prelude__$3A$3C_(arg.h12.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, true, arg.h12.h0, (arg.h12.h1) - (1), kind, Prelude_pack(Prelude__$3C$3E$3E_(arg.h15, Prelude_Nil())))), Prelude__$3A$3A_(arg.h12.h3.h1, arg.h12.h3.h2)) }; break; } } } else { return { tag: 1, h0: Lib_Tokenizer_TS(arg.h12.h0, arg.h12.h1, Prelude__$3A$3C_(arg.h12.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, true, arg.h12.h0, arg.h12.h1, arg.h13, Prelude_pack(Prelude__$3C$3E$3E_(arg.h15, Prelude_Nil())))), Prelude_Nil()) }; } break; } case 4: { if ((arg.h11.h3.tag) == (1)) { switch (arg.h11.h3.h1) { case "-": { if ((arg.h11.h3.h2.tag) == (1)) { switch (arg.h11.h3.h2.h1) { case "/": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h11.h0, (arg.h11.h1) + (2), arg.h11.h2, arg.h11.h3.h2.h2) }; default: return { tag: 4, 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: Lib_Tokenizer_TS(arg.h11.h0, (arg.h11.h1) + (1), arg.h11.h2, arg.h11.h3.h2) }; } } else { return { tag: 4, 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: Lib_Tokenizer_TS(arg.h11.h0, (arg.h11.h1) + (1), arg.h11.h2, arg.h11.h3.h2) }; } break; } case "\n": return { tag: 4, 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: Lib_Tokenizer_TS((arg.h11.h0) + (1), 0, arg.h11.h2, arg.h11.h3.h2) }; default: return { tag: 4, 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: Lib_Tokenizer_TS(arg.h11.h0, (arg.h11.h1) + (1), arg.h11.h2, arg.h11.h3.h2) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(arg.h11.h0, arg.h11.h1, arg.h11.h0, arg.h11.h1)), "EOF in block comment")) }; } break; } case 5: { if ((arg.h8.h3.tag) == (1)) { switch (arg.h8.h3.h1) { case "`": { const tok = Lib_Common_MkBounded(Lib_Token_Tok(7, Prelude_pack(Prelude__$3C$3E$3E_(arg.h9, Prelude_Nil()))), Lib_Common_MkBounds(arg.h1, arg.h2, arg.h8.h0, arg.h8.h1)); return { tag: 1, h0: Lib_Tokenizer_TS(arg.h8.h0, (arg.h8.h1) + (1), Prelude__$3A$3C_(arg.h8.h2, tok), arg.h8.h3.h2) }; break; } case "\n": return { tag: 5, 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: Lib_Tokenizer_TS((arg.h8.h0) + (1), 0, arg.h8.h2, arg.h8.h3.h2), h9: Prelude__$3A$3C_(arg.h9, "\n") }; default: return { tag: 5, 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: Lib_Tokenizer_TS(arg.h8.h0, (arg.h8.h1) + (1), arg.h8.h2, arg.h8.h3.h2), h9: Prelude__$3A$3C_(arg.h9, arg.h8.h3.h1) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(arg.h8.h0, arg.h8.h1, arg.h8.h0, arg.h8.h1)), "EOF in backtick string")) }; } break; } case 6: { if ((arg.h10.h3.tag) == (1)) { switch (arg.h10.h3.h1) { case "\n": return { tag: 1, h0: Lib_Tokenizer_TS((arg.h10.h0) + (1), 0, arg.h10.h2, arg.h10.h3.h2) }; default: return { tag: 6, 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: Lib_Tokenizer_TS(arg.h10.h0, (arg.h10.h1) + (1), arg.h10.h2, arg.h10.h3.h2) }; } } else { return { tag: 1, h0: Lib_Tokenizer_TS(arg.h10.h0, arg.h10.h1, arg.h10.h2, Prelude_Nil()) }; } break; } } }; +const Lib_Tokenizer_REC_rawTokenise = ( arg ) => { switch (arg.tag) { case 1: { if ((arg.h0.h3.tag) == (1)) { switch (arg.h0.h3.h1) { case " ": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, arg.h0.h3.h2) }; case "\n": return { tag: 1, h0: Lib_Tokenizer_TS((arg.h0.h0) + (1), 0, arg.h0.h2, arg.h0.h3.h2) }; case "\"": { const tok = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (1), 17, "\""); const sc$$18 = Lib_Tokenizer_quoteTokenise(Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), Prelude__$3A$3C_(arg.h0.h2, tok), arg.h0.h3.h2), arg.h0.h0, (arg.h0.h1) + (1), Prelude_Lin()); if ((sc$$18.tag) == (1)) { if ((sc$$18.h2.h3.tag) == (1)) { switch (sc$$18.h2.h3.h1) { case "\"": { const tok1 = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, sc$$18.h2.h0, (sc$$18.h2.h1) + (1), 18, "\""); return { tag: 1, h0: Lib_Tokenizer_TS(sc$$18.h2.h0, (sc$$18.h2.h1) + (1), Prelude__$3A$3C_(sc$$18.h2.h2, tok1), sc$$18.h2.h3.h2) }; break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$18.h2.h0, sc$$18.h2.h1, sc$$18.h2.h0, (sc$$18.h2.h1) + (1))), "Expected '\"'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$18.h2.h0, sc$$18.h2.h1, sc$$18.h2.h0, (sc$$18.h2.h1) + (1))), "Expected '\"'")) }; } } else { return { tag: 0, h0: Prelude_Left(sc$$18.h2) }; } break; } case "}": return { tag: 0, h0: Prelude_Right(arg.h0) }; case "{": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case "{": { const tok = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (2), 2, "{{"); const sc$$21 = Lib_Tokenizer_rawTokenise(Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), Prelude__$3A$3C_(arg.h0.h2, tok), arg.h0.h3.h2.h2)); if ((sc$$21.tag) == (1)) { if ((sc$$21.h2.h3.tag) == (1)) { switch (sc$$21.h2.h3.h1) { case "}": { if ((sc$$21.h2.h3.h2.tag) == (1)) { switch (sc$$21.h2.h3.h2.h1) { case "}": { const tok1 = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, sc$$21.h2.h0, (sc$$21.h2.h1) + (2), 2, "}}"); return { tag: 1, h0: Lib_Tokenizer_TS(sc$$21.h2.h0, (sc$$21.h2.h1) + (2), Prelude__$3A$3C_(sc$$21.h2.h2, tok1), sc$$21.h2.h3.h2.h2) }; break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, (sc$$21.h2.h1) + (1))), "Expected '}}'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, (sc$$21.h2.h1) + (1))), "Expected '}}'")) }; } break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, (sc$$21.h2.h1) + (1))), "Expected '}}'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, (sc$$21.h2.h1) + (1))), "Expected '}}'")) }; } } else { return { tag: 0, h0: Prelude_Left(sc$$21.h2) }; } break; } default: { const tok = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (1), 8, "{"); const sc$$21 = Lib_Tokenizer_rawTokenise(Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), Prelude__$3A$3C_(arg.h0.h2, tok), arg.h0.h3.h2)); if ((sc$$21.tag) == (1)) { if ((sc$$21.h2.h3.tag) == (1)) { switch (sc$$21.h2.h3.h1) { case "}": { const tok1 = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, sc$$21.h2.h0, (sc$$21.h2.h1) + (1), 8, "}"); return { tag: 1, h0: Lib_Tokenizer_TS(sc$$21.h2.h0, (sc$$21.h2.h1) + (1), Prelude__$3A$3C_(sc$$21.h2.h2, tok1), sc$$21.h2.h3.h2) }; break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, (sc$$21.h2.h1) + (1))), "Expected '}'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$21.h2.h0, sc$$21.h2.h1, sc$$21.h2.h0, (sc$$21.h2.h1) + (1))), "Expected '}'")) }; } } else { return { tag: 0, h0: Prelude_Left(sc$$21.h2) }; } break; } } } else { const tok = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (1), 8, "{"); const sc$$18 = Lib_Tokenizer_rawTokenise(Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), Prelude__$3A$3C_(arg.h0.h2, tok), arg.h0.h3.h2)); if ((sc$$18.tag) == (1)) { if ((sc$$18.h2.h3.tag) == (1)) { switch (sc$$18.h2.h3.h1) { case "}": { const tok1 = Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, sc$$18.h2.h0, (sc$$18.h2.h1) + (1), 8, "}"); return { tag: 1, h0: Lib_Tokenizer_TS(sc$$18.h2.h0, (sc$$18.h2.h1) + (1), Prelude__$3A$3C_(sc$$18.h2.h2, tok1), sc$$18.h2.h3.h2) }; break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$18.h2.h0, sc$$18.h2.h1, sc$$18.h2.h0, (sc$$18.h2.h1) + (1))), "Expected '}'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$18.h2.h0, sc$$18.h2.h1, sc$$18.h2.h0, (sc$$18.h2.h1) + (1))), "Expected '}'")) }; } } else { return { tag: 0, h0: Prelude_Left(sc$$18.h2) }; } } break; } case ",": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (1), 0, ",")), arg.h0.h3.h2) }; case "_": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case ",": { if ((arg.h0.h3.h2.h2.tag) == (1)) { switch (arg.h0.h3.h2.h2.h1) { case "_": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (3), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (3), 3, "_,_")), arg.h0.h3.h2.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } case ".": { if ((arg.h0.h3.h2.h2.tag) == (1)) { switch (arg.h0.h3.h2.h2.h1) { case "_": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (3), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (3), 3, "_._")), arg.h0.h3.h2.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } case "'": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case "\\": { if ((arg.h0.h3.h2.h2.tag) == (1)) { if ((arg.h0.h3.h2.h2.h2.tag) == (1)) { switch (arg.h0.h3.h2.h2.h2.h1) { case "'": { let ch; switch (arg.h0.h3.h2.h2.h1) { case "n": { ch = "\n"; break; } case "t": { ch = Prelude_chr(9); break; } default: { ch = arg.h0.h3.h2.h2.h1; break; } } return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (4), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (4), 5, Prelude_pack(Prelude__$3A$3A_(ch, Prelude_Nil())))), arg.h0.h3.h2.h2.h2.h2) }; break; } default: switch (arg.h0.h3.h2.h2.h1) { case "'": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (3), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (3), 5, Prelude_pack(Prelude__$3A$3A_(arg.h0.h3.h2.h1, Prelude_Nil())))), arg.h0.h3.h2.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } } else { switch (arg.h0.h3.h2.h2.h1) { case "'": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (3), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (3), 5, Prelude_pack(Prelude__$3A$3A_(arg.h0.h3.h2.h1, Prelude_Nil())))), arg.h0.h3.h2.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } default: { if ((arg.h0.h3.h2.h2.tag) == (1)) { switch (arg.h0.h3.h2.h2.h1) { case "'": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (3), Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, false, arg.h0.h0, (arg.h0.h1) + (3), 5, Prelude_pack(Prelude__$3A$3A_(arg.h0.h3.h2.h1, Prelude_Nil())))), arg.h0.h3.h2.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } case "#": return { tag: 3, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, arg.h0.h3.h2), h13: 11, h14: ( eta ) => (Lib_Tokenizer_rawTokenise_isIdent(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, eta)), h15: Prelude__$3A$3C_(Prelude_Lin(), "#") }; case "/": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case "-": return { tag: 4, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), arg.h0.h2, arg.h0.h3.h2.h2) }; default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } case "`": return { tag: 5, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, arg.h0.h3.h2), h9: Prelude_Lin() }; case ".": return { tag: 3, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, arg.h0.h3.h2), h13: 12, h14: ( eta ) => (Lib_Tokenizer_rawTokenise_isIdent(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, eta)), h15: Prelude__$3A$3C_(Prelude_Lin(), ".") }; case "-": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case "-": return { tag: 6, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), arg.h0.h2, arg.h0.h3.h2.h2) }; default: { const sc$$20 = Prelude_isDigit(arg.h0.h3.h2.h1); switch (sc$$20) { case true: return { tag: 3, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), arg.h0.h2, arg.h0.h3.h2.h2), h13: 4, h14: ( eta ) => (Prelude_isDigit(eta)), h15: Prelude__$3A$3C_(Prelude__$3A$3C_(Prelude_Lin(), "-"), arg.h0.h3.h2.h1) }; case false: return { tag: 3, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, Prelude__$3A$3A_(arg.h0.h3.h2.h1, arg.h0.h3.h2.h2)), h13: 0, h14: ( eta ) => (Lib_Tokenizer_rawTokenise_isIdent(arg.h0, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3, eta)), h15: Prelude__$3A$3C_(Prelude_Lin(), "-") }; } break; } } } else { return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } break; } default: return { tag: 2, h0: arg.h0, h1: arg.h0.h0, h2: arg.h0.h1, h3: arg.h0.h2, h4: arg.h0.h3, h5: null, h6: null, h7: null, h8: null, h9: null, h10: null, h11: null, h12: null, h13: arg.h0.h3.h1, h14: arg.h0.h3.h2 }; } } else { return { tag: 0, h0: Prelude_Right(arg.h0) }; } break; } case 2: { const sc$$15 = Prelude_elem(Prelude_Prelude_Eq$20Prim_Char, arg.h13, Lib_Tokenizer_standalone); switch (sc$$15) { case true: return { tag: 1, h0: Lib_Tokenizer_TS(arg.h1, (arg.h2) + (1), Prelude__$3A$3C_(arg.h3, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, true, arg.h1, (arg.h2) + (1), 8, Prelude_pack(Prelude__$3A$3A_(arg.h13, Prelude_Nil())))), arg.h14) }; case false: { let kind; const sc$$16 = Prelude_isDigit(arg.h13); switch (sc$$16) { case true: { kind = 4; break; } case false: { const sc$$17 = Prelude_isUpper(arg.h13); switch (sc$$17) { case true: { kind = 1; break; } case false: { kind = 0; break; } } break; } } return { tag: 3, 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: Lib_Tokenizer_TS(arg.h1, arg.h2, arg.h3, Prelude__$3A$3A_(arg.h13, arg.h14)), h13: kind, h14: ( eta ) => (Lib_Tokenizer_rawTokenise_isIdent(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, eta)), h15: Prelude_Lin() }; break; } } break; } case 3: { if ((arg.h12.h3.tag) == (1)) { const sc$$23 = arg.h14(arg.h12.h3.h1); switch (sc$$23) { case true: return { tag: 3, 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: Lib_Tokenizer_TS(arg.h12.h0, (arg.h12.h1) + (1), arg.h12.h2, arg.h12.h3.h2), h13: arg.h13, h14: arg.h14, h15: Prelude__$3A$3C_(arg.h15, arg.h12.h3.h1) }; case false: { let kind; const sc$$24 = Data_SnocList_snocelem(Prelude_Prelude_Eq$20Prim_Char, "_", arg.h15); switch (sc$$24) { case true: { kind = 3; break; } case false: { kind = arg.h13; break; } } return { tag: 1, h0: Lib_Tokenizer_TS(arg.h12.h0, arg.h12.h1, Prelude__$3A$3C_(arg.h12.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, true, arg.h12.h0, (arg.h12.h1) - (1), kind, Prelude_pack(Prelude__$3C$3E$3E_(arg.h15, Prelude_Nil())))), Prelude__$3A$3A_(arg.h12.h3.h1, arg.h12.h3.h2)) }; break; } } } else { return { tag: 1, h0: Lib_Tokenizer_TS(arg.h12.h0, arg.h12.h1, Prelude__$3A$3C_(arg.h12.h2, Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok(arg.h0, arg.h1, arg.h2, arg.h3, arg.h4, true, arg.h12.h0, arg.h12.h1, arg.h13, Prelude_pack(Prelude__$3C$3E$3E_(arg.h15, Prelude_Nil())))), Prelude_Nil()) }; } break; } case 4: { if ((arg.h11.h3.tag) == (1)) { switch (arg.h11.h3.h1) { case "-": { if ((arg.h11.h3.h2.tag) == (1)) { switch (arg.h11.h3.h2.h1) { case "/": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h11.h0, (arg.h11.h1) + (2), arg.h11.h2, arg.h11.h3.h2.h2) }; default: return { tag: 4, 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: Lib_Tokenizer_TS(arg.h11.h0, (arg.h11.h1) + (1), arg.h11.h2, arg.h11.h3.h2) }; } } else { return { tag: 4, 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: Lib_Tokenizer_TS(arg.h11.h0, (arg.h11.h1) + (1), arg.h11.h2, arg.h11.h3.h2) }; } break; } case "\n": return { tag: 4, 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: Lib_Tokenizer_TS((arg.h11.h0) + (1), 0, arg.h11.h2, arg.h11.h3.h2) }; default: return { tag: 4, 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: Lib_Tokenizer_TS(arg.h11.h0, (arg.h11.h1) + (1), arg.h11.h2, arg.h11.h3.h2) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(arg.h11.h0, arg.h11.h1, arg.h11.h0, arg.h11.h1)), "EOF in block comment")) }; } break; } case 5: { if ((arg.h8.h3.tag) == (1)) { switch (arg.h8.h3.h1) { case "`": { const tok = Lib_Common_MkBounded(Lib_Token_Tok(7, Prelude_pack(Prelude__$3C$3E$3E_(arg.h9, Prelude_Nil()))), Lib_Common_MkBounds(arg.h1, arg.h2, arg.h8.h0, (arg.h8.h1) + (1))); return { tag: 1, h0: Lib_Tokenizer_TS(arg.h8.h0, (arg.h8.h1) + (1), Prelude__$3A$3C_(arg.h8.h2, tok), arg.h8.h3.h2) }; break; } case "\n": return { tag: 5, 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: Lib_Tokenizer_TS((arg.h8.h0) + (1), 0, arg.h8.h2, arg.h8.h3.h2), h9: Prelude__$3A$3C_(arg.h9, "\n") }; default: return { tag: 5, 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: Lib_Tokenizer_TS(arg.h8.h0, (arg.h8.h1) + (1), arg.h8.h2, arg.h8.h3.h2), h9: Prelude__$3A$3C_(arg.h9, arg.h8.h3.h1) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(arg.h8.h0, arg.h8.h1, arg.h8.h0, arg.h8.h1)), "EOF in backtick string")) }; } break; } case 6: { if ((arg.h10.h3.tag) == (1)) { switch (arg.h10.h3.h1) { case "\n": return { tag: 1, h0: Lib_Tokenizer_TS((arg.h10.h0) + (1), 0, arg.h10.h2, arg.h10.h3.h2) }; default: return { tag: 6, 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: Lib_Tokenizer_TS(arg.h10.h0, (arg.h10.h1) + (1), arg.h10.h2, arg.h10.h3.h2) }; } } else { return { tag: 1, h0: Lib_Tokenizer_TS(arg.h10.h0, arg.h10.h1, arg.h10.h2, Prelude_Nil()) }; } break; } } }; const Lib_Token_Tok = ( h0, h1 ) => ({ tag: 0, h0: h0, h1: h1 }); const Lib_Common_MkBounded = ( h1, h2 ) => ({ tag: 0, h1: h1, h2: h2 }); -const Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok = ( _, _1, _2, _3, _4, _$$9, _$$10, _$$11, _$$12, _$$13 ) => { let kind; const sc$$14 = (_$$9) && (Prelude_elem(Prelude_Prelude_Eq$20Prim_String, _$$13, Lib_Tokenizer_keywords)); switch (sc$$14) { case true: { kind = 2; break; } case false: { kind = _$$12; break; } } return Lib_Common_MkBounded(Lib_Token_Tok(kind, _$$13), Lib_Common_MkBounds(_1, _2, _$$10, _$$11)); }; +const Lib_Tokenizer_rawTokenise_isIdent_isUIdent_doBacktick_mktok = ( _, _1, _2, _3, _4, _$$9, _$$10, _$$11, _$$12, _$$13 ) => { let kind; const sc$$14 = (_$$9) && (Prelude_elem(Prelude_Prelude_Eq$20Prim_String, _$$13, Lib_Tokenizer_keywords)); switch (sc$$14) { case true: { kind = 2; break; } case false: { kind = _$$12; break; } } return Lib_Common_MkBounded(Lib_Token_Tok(kind, _$$13), Lib_Common_MkBounds(_1, _2, _$$10, (_$$11) + (1))); }; const Lib_Tokenizer_keywords = Prelude__$3A$3A_("let", Prelude__$3A$3A_("in", Prelude__$3A$3A_("where", Prelude__$3A$3A_("case", Prelude__$3A$3A_("of", Prelude__$3A$3A_("data", Prelude__$3A$3A_("U", Prelude__$3A$3A_("do", Prelude__$3A$3A_("ptype", Prelude__$3A$3A_("pfunc", Prelude__$3A$3A_("module", Prelude__$3A$3A_("infixl", Prelude__$3A$3A_("infixr", Prelude__$3A$3A_("infix", Prelude__$3A$3A_("∀", Prelude__$3A$3A_("forall", Prelude__$3A$3A_("import", Prelude__$3A$3A_("uses", Prelude__$3A$3A_("class", Prelude__$3A$3A_("instance", Prelude__$3A$3A_("record", Prelude__$3A$3A_("constructor", Prelude__$3A$3A_("if", Prelude__$3A$3A_("then", Prelude__$3A$3A_("else", Prelude__$3A$3A_("$", Prelude__$3A$3A_("λ", Prelude__$3A$3A_("?", Prelude__$3A$3A_("@", Prelude__$3A$3A_(".", Prelude__$3A$3A_("->", Prelude__$3A$3A_("→", Prelude__$3A$3A_(":", Prelude__$3A$3A_("=>", Prelude__$3A$3A_(":=", Prelude__$3A$3A_("$=", Prelude__$3A$3A_("=", Prelude__$3A$3A_("<-", Prelude__$3A$3A_("\\", Prelude__$3A$3A_("_", Prelude__$3A$3A_("|", Prelude_Nil()))))))))))))))))))))))))))))))))))))))))); const Prelude_Prelude_Eq$20Prim_Char$2C_$3D$3D_ = ( _$$0, _$$1 ) => ((_$$0) == (_$$1)); const Prelude_Prelude_Eq$20Prim_Char = Prelude_MkEq(( eta ) => (( eta1 ) => (Prelude_Prelude_Eq$20Prim_Char$2C_$3D$3D_(eta, eta1)))); @@ -825,16 +832,14 @@ const Data_SnocList_REC_snocelem = ( arg ) => { if ((arg.h3.tag) == (1)) { const const Lib_Tokenizer_rawTokenise_isIdent = ( _, _1, _2, _3, _4, _$$6 ) => (Prelude_not((Prelude_isSpace(_$$6)) || (Prelude_elem(Prelude_Prelude_Eq$20Prim_Char, _$$6, Lib_Tokenizer_standalone)))); const Lib_Tokenizer_standalone = Prelude_unpack("()\\{}[],.@;"); const Prelude_isSpace = ( _$$0 ) => { switch (_$$0) { case " ": return true; case "\n": return true; default: return false; } }; -const Prelude_isUpper = ( _$$0 ) => { const o = Prelude_ord(_$$0); return (Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, 64, o), 0)) && (Prelude_Prelude_Eq$20Prelude_Ordering$2C_$3D$3D_(Prelude_jsCompare(null, o, 91), 0)); }; const Prelude_isDigit = ( _$$0 ) => { switch (_$$0) { case "0": return true; case "1": return true; case "2": return true; case "3": return true; case "4": return true; case "5": return true; case "6": return true; case "7": return true; case "8": return true; case "9": return true; default: return false; } }; const Prelude_chr = (c) => String.fromCharCode(c); const Lib_Tokenizer_quoteTokenise = ( _$$0, _$$1, _$$2, _$$3 ) => (bouncer(Lib_Tokenizer_REC_quoteTokenise, { tag: 1, h0: _$$0, h1: _$$1, h2: _$$2, h3: _$$3 })); const Lib_Tokenizer_REC_quoteTokenise = ( arg ) => { if ((arg.h0.h3.tag) == (1)) { switch (arg.h0.h3.h1) { case "\"": return { tag: 0, h0: Prelude_Right(Lib_Tokenizer_TS(arg.h0.h0, arg.h0.h1, Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_quoteTokenise_stok(arg.h0, arg.h1, arg.h2, arg.h3, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3)), arg.h0.h3)) }; case "\n": return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(arg.h0.h0, arg.h0.h1, arg.h0.h0, arg.h0.h1)), "Newline in string")) }; case "\\": { if ((arg.h0.h3.h2.tag) == (1)) { switch (arg.h0.h3.h2.h1) { case "{": { const tok = Lib_Common_MkBounded(Lib_Token_Tok(19, "\\{"), Lib_Common_MkBounds(arg.h0.h0, arg.h0.h1, arg.h0.h0, (arg.h0.h1) + (2))); const sc$$17 = Lib_Tokenizer_rawTokenise(Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), Prelude__$3A$3C_(Prelude__$3A$3C_(arg.h0.h2, Lib_Tokenizer_quoteTokenise_stok(arg.h0, arg.h1, arg.h2, arg.h3, arg.h0.h0, arg.h0.h1, arg.h0.h2, arg.h0.h3)), tok), arg.h0.h3.h2.h2)); if ((sc$$17.tag) == (1)) { if ((sc$$17.h2.h3.tag) == (1)) { switch (sc$$17.h2.h3.h1) { case "}": { const tok1 = Lib_Common_MkBounded(Lib_Token_Tok(20, "}"), Lib_Common_MkBounds(sc$$17.h2.h0, sc$$17.h2.h1, sc$$17.h2.h0, (sc$$17.h2.h1) + (1))); return { tag: 1, h0: Lib_Tokenizer_TS(sc$$17.h2.h0, (sc$$17.h2.h1) + (1), Prelude__$3A$3C_(sc$$17.h2.h2, tok1), sc$$17.h2.h3.h2), h1: sc$$17.h2.h0, h2: (sc$$17.h2.h1) + (1), h3: Prelude_Lin() }; break; } default: return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$17.h2.h0, sc$$17.h2.h1, sc$$17.h2.h0, sc$$17.h2.h1)), "Expected '{'")) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(sc$$17.h2.h0, sc$$17.h2.h1, sc$$17.h2.h0, sc$$17.h2.h1)), "Expected '{'")) }; } } else { return { tag: 0, h0: Prelude_Left(sc$$17.h2) }; } break; } case "n": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), arg.h0.h2, arg.h0.h3.h2.h2), h1: arg.h1, h2: arg.h2, h3: Prelude__$3A$3C_(arg.h3, "\n") }; case "t": return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), arg.h0.h2, arg.h0.h3.h2.h2), h1: arg.h1, h2: arg.h2, h3: Prelude__$3A$3C_(arg.h3, Prelude_chr(9)) }; default: return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (2), arg.h0.h2, arg.h0.h3.h2.h2), h1: arg.h1, h2: arg.h2, h3: Prelude__$3A$3C_(arg.h3, arg.h0.h3.h2.h1) }; } } else { return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, arg.h0.h3.h2), h1: arg.h1, h2: arg.h2, h3: Prelude__$3A$3C_(arg.h3, arg.h0.h3.h1) }; } break; } default: return { tag: 1, h0: Lib_Tokenizer_TS(arg.h0.h0, (arg.h0.h1) + (1), arg.h0.h2, arg.h0.h3.h2), h1: arg.h1, h2: arg.h2, h3: Prelude__$3A$3C_(arg.h3, arg.h0.h3.h1) }; } } else { return { tag: 0, h0: Prelude_Left(Lib_Common_E(Lib_Common_MkFC("", Lib_Common_MkBounds(arg.h0.h0, arg.h0.h1, arg.h0.h0, arg.h0.h1)), "Expected '\"' at EOF")) }; } }; -const Lib_Tokenizer_quoteTokenise_stok = ( _, _1, _2, _3, _4, _5, _6, _7 ) => (Lib_Common_MkBounded(Lib_Token_Tok(6, Prelude_pack(Prelude__$3C$3E$3E_(_3, Prelude_Nil()))), Lib_Common_MkBounds(_1, _2, _4, _5))); +const Lib_Tokenizer_quoteTokenise_stok = ( _, _1, _2, _3, _4, _5, _6, _7 ) => (Lib_Common_MkBounded(Lib_Token_Tok(6, Prelude_pack(Prelude__$3C$3E$3E_(_3, Prelude_Nil()))), Lib_Common_MkBounds(_1, _2, _4, (_5) + (1)))); const Lib_ProcessModule__getFile = ( $$self$$0 ) => ($$self$$0.h0); const Main_dirFileSource = ( _$$0 ) => (Lib_ProcessModule_MkFileSource(( fc ) => (( fn ) => { const fn1 = (_$$0) + (("/") + (fn)); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Node_readFile(fn1)), ( $$sc ) => (( ($$sc.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(fn1, $$sc.h2)) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(fc, (((("error reading ") + (fn1)) + (": ")) + ($$sc.h2)) + (""))), eta)))) ))); }))); const Node_readFile = (fn) => (w) => { - let fs = require('fs') let result try { let content = fs.readFileSync(fn, 'utf8') @@ -845,7 +850,8 @@ const Node_readFile = (fn) => (w) => { return Prelude_MkIORes(result, w) }; const Lib_ProcessModule_MkFileSource = ( h0 ) => ({ tag: 0, h0: h0 }); -const Lib_ProcessModule_invalidateModule = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(Data_SortedMap_deleteMap(_$$0, tc.h0), tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, tc.h6, tc.h7, tc.h8))))); +const Lib_ProcessModule_invalidateModule = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const modules = Prelude_Prelude_Monad$20Prelude_List$2Cbind(Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_ProcessModule_invalidateModule_accumulate_getDeps(_$$0, eta)), Data_SortedMap_toList(top.h0)), ( _$$1 ) => (_$$1)); const revMap = Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (Prelude__$2C_(_$$2.h3, _$$2.h2)), modules); const deps = Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_ProcessModule_invalidateModule_accumulate(_$$0, eta, eta1))), Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Prelude_Prelude_Ord$20Prim_String$2Ccompare(eta, eta1)))), revMap); return Lib_ProcessModule_invalidateModule_accumulate_getDeps_go(_$$0, deps, Prelude__$3A$3A_(_$$0, Prelude_Nil())); })); +const Lib_ProcessModule_invalidateModule_accumulate_getDeps_go = ( _, _$$4, _$$5 ) => (( (_$$5.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(Data_SortedMap_deleteMap(_$$5.h1, tc.h0), tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, tc.h6, tc.h7, tc.h8, tc.h9)))), ( _1 ) => { const ds = Prelude_fromMaybe(Prelude_Nil(), Data_SortedMap_lookupMap$27(_$$5.h1, _$$4)); return Lib_ProcessModule_invalidateModule_accumulate_getDeps_go(_, _$$4, Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(ds, _$$5.h2)); }) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) )); const Data_SortedMap_deleteMap = ( _$$2, _$$3 ) => { if ((_$$3.tag) == (1)) { switch (_$$3.h2) { case 0: { const sc$$9 = Data_SortedMap_deleteT23(_$$3.h3, 0, _$$2, _$$3.h4); return ( (sc$$9.tag) == (1) ? Data_SortedMap_EmptyMap(_$$3.h3) : Data_SortedMap_MapOf(0, _$$3.h3, sc$$9.h2) ); break; } default: { const x = (_$$3.h2) - (1); const sc$$10 = Data_SortedMap_deleteT23(_$$3.h3, (1) + (x), _$$2, _$$3.h4); return ( (sc$$10.tag) == (1) ? Data_SortedMap_MapOf(x, _$$3.h3, sc$$10.h2) : Data_SortedMap_MapOf((1) + (x), _$$3.h3, sc$$10.h2) ); break; } } } else { return _$$3; } }; const Data_SortedMap_deleteT23 = ( _$$2, h$$3, _$$4, _$$5 ) => { switch (_$$5.tag) { case 2: switch (h$$3.tag) { default: { const x = (h$$3) - (1); switch (x) { case 0: { const sc$$15 = _$$2(_$$4)(_$$5.h4); switch (sc$$15) { case 2: { const sc$$16 = _$$2(_$$4)(_$$5.h6); switch (sc$$16) { case 2: { const sc$$17 = Data_SortedMap_deleteT23(_$$2, 0, _$$4, _$$5.h7); return ( (sc$$17.tag) == (1) ? Prelude_Left(Data_SortedMap_Node2(_$$5.h3, _$$5.h4, _$$5.h5)) : Prelude_Left(Data_SortedMap_Node3(_$$5.h3, _$$5.h4, _$$5.h5, _$$5.h6, sc$$17.h2)) ); break; } default: { const sc$$17 = Data_SortedMap_deleteT23(_$$2, 0, _$$4, _$$5.h5); return ( (sc$$17.tag) == (1) ? Prelude_Left(Data_SortedMap_Node2(_$$5.h3, _$$5.h4, _$$5.h7)) : Prelude_Left(Data_SortedMap_Node3(_$$5.h3, _$$5.h4, sc$$17.h2, _$$5.h6, _$$5.h7)) ); break; } } break; } default: { const sc$$16 = Data_SortedMap_deleteT23(_$$2, 0, _$$4, _$$5.h3); if ((sc$$16.tag) == (1)) { switch (sc$$16.h2) { case 0: return Prelude_Left(Data_SortedMap_Node2(_$$5.h5, _$$5.h6, _$$5.h7)); } } else { return Prelude_Left(Data_SortedMap_Node3(sc$$16.h2, _$$5.h4, _$$5.h5, _$$5.h6, _$$5.h7)); } break; } } break; } default: { const x1 = (x) - (1); const sc$$16 = _$$2(_$$4)(_$$5.h4); switch (sc$$16) { case 2: { const sc$$17 = _$$2(_$$4)(_$$5.h6); switch (sc$$17) { case 2: { const sc$$18 = Data_SortedMap_deleteT23(_$$2, (1) + (x1), _$$4, _$$5.h7); return ( (sc$$18.tag) == (1) ? Prelude_Left(Data_SortedMap_merge3(_$$5.h3, _$$5.h4, _$$5.h5, _$$5.h6, sc$$18.h2)) : Prelude_Left(Data_SortedMap_Node3(_$$5.h3, _$$5.h4, _$$5.h5, _$$5.h6, sc$$18.h2)) ); break; } default: { const sc$$18 = Data_SortedMap_deleteT23(_$$2, (1) + (x1), _$$4, _$$5.h5); return ( (sc$$18.tag) == (1) ? Prelude_Left(Data_SortedMap_merge2(_$$5.h3, _$$5.h4, sc$$18.h2, _$$5.h6, _$$5.h7)) : Prelude_Left(Data_SortedMap_Node3(_$$5.h3, _$$5.h4, sc$$18.h2, _$$5.h6, _$$5.h7)) ); break; } } break; } default: { const sc$$17 = Data_SortedMap_deleteT23(_$$2, (1) + (x1), _$$4, _$$5.h3); return ( (sc$$17.tag) == (1) ? Prelude_Left(Data_SortedMap_merge1(sc$$17.h2, _$$5.h4, _$$5.h5, _$$5.h6, _$$5.h7)) : Prelude_Left(Data_SortedMap_Node3(sc$$17.h2, _$$5.h4, _$$5.h5, _$$5.h6, _$$5.h7)) ); break; } } break; } } break; } } break; case 1: switch (h$$3.tag) { default: { const x = (h$$3) - (1); switch (x) { case 0: { const sc$$13 = _$$2(_$$4)(_$$5.h4); switch (sc$$13) { case 2: { const sc$$14 = Data_SortedMap_deleteT23(_$$2, 0, _$$4, _$$5.h5); if ((sc$$14.tag) == (1)) { switch (sc$$14.h2) { case 0: return Prelude_Right(_$$5.h3); } } else { return Prelude_Left(Data_SortedMap_Node2(_$$5.h3, _$$5.h4, sc$$14.h2)); } break; } default: { const sc$$14 = Data_SortedMap_deleteT23(_$$2, 0, _$$4, _$$5.h3); return ( (sc$$14.tag) == (1) ? Prelude_Right(_$$5.h5) : Prelude_Left(Data_SortedMap_Node2(sc$$14.h2, _$$5.h4, _$$5.h5)) ); break; } } break; } default: { const x1 = (x) - (1); const sc$$14 = _$$2(_$$4)(_$$5.h4); switch (sc$$14) { case 2: { const sc$$15 = Data_SortedMap_deleteT23(_$$2, (1) + (x1), _$$4, _$$5.h5); return ( (sc$$15.tag) == (1) ? ( (_$$5.h3.tag) == (2) ? Prelude_Left(Data_SortedMap_Node4(_$$5.h3.h3, _$$5.h3.h4, _$$5.h3.h5, _$$5.h3.h6, _$$5.h3.h7, _$$5.h4, sc$$15.h2)) : Prelude_Right(Data_SortedMap_Node3(_$$5.h3.h3, _$$5.h3.h4, _$$5.h3.h5, _$$5.h4, sc$$15.h2)) ) : Prelude_Left(Data_SortedMap_Node2(_$$5.h3, _$$5.h4, sc$$15.h2)) ); break; } default: { const sc$$15 = Data_SortedMap_deleteT23(_$$2, (1) + (x1), _$$4, _$$5.h3); return ( (sc$$15.tag) == (1) ? ( (_$$5.h5.tag) == (2) ? Prelude_Left(Data_SortedMap_Node4(sc$$15.h2, _$$5.h4, _$$5.h5.h3, _$$5.h5.h4, _$$5.h5.h5, _$$5.h5.h6, _$$5.h5.h7)) : Prelude_Right(Data_SortedMap_Node3(sc$$15.h2, _$$5.h4, _$$5.h5.h3, _$$5.h5.h4, _$$5.h5.h5)) ) : Prelude_Left(Data_SortedMap_Node2(sc$$15.h2, _$$5.h4, _$$5.h5)) ); break; } } break; } } break; } } break; case 0: switch (h$$3) { case 0: { const sc$$10 = _$$2(_$$5.h2)(_$$4); switch (sc$$10) { case 1: return Prelude_Right(0); default: return Prelude_Left(Data_SortedMap_Leaf(_$$5.h2, _$$5.h3)); } break; } } break; } }; const Data_SortedMap_Node4 = ( _$$3, _$$4, _$$5, _$$6, _$$7, _$$8, _$$9 ) => (Data_SortedMap_Node2(Data_SortedMap_Node2(_$$3, _$$4, _$$5), _$$6, Data_SortedMap_Node2(_$$7, _$$8, _$$9))); @@ -855,6 +861,8 @@ const Data_SortedMap_Node6 = ( _$$3, _$$4, _$$5, _$$6, _$$7, _$$8, _$$9, _$$10, const Data_SortedMap_Node7 = ( _$$3, _$$4, _$$5, _$$6, _$$7, _$$8, _$$9, _$$10, _$$11, _$$12, _$$13, _$$14, _$$15 ) => (Data_SortedMap_Node3(Data_SortedMap_Node3(_$$3, _$$4, _$$5, _$$6, _$$7), _$$8, Data_SortedMap_Node2(_$$9, _$$10, _$$11), _$$12, Data_SortedMap_Node2(_$$13, _$$14, _$$15))); const Data_SortedMap_merge2 = ( _$$3, _$$4, _$$5, _$$6, _$$7 ) => (( (_$$7.tag) == (2) ? ( (_$$3.tag) == (2) ? Data_SortedMap_Node7(_$$3.h3, _$$3.h4, _$$3.h5, _$$3.h6, _$$3.h7, _$$4, _$$5, _$$6, _$$7.h3, _$$7.h4, _$$7.h5, _$$7.h6, _$$7.h7) : Data_SortedMap_Node6(_$$3.h3, _$$3.h4, _$$3.h5, _$$4, _$$5, _$$6, _$$7.h3, _$$7.h4, _$$7.h5, _$$7.h6, _$$7.h7) ) : ( (_$$3.tag) == (2) ? Data_SortedMap_Node6(_$$3.h3, _$$3.h4, _$$3.h5, _$$3.h6, _$$3.h7, _$$4, _$$5, _$$6, _$$7.h3, _$$7.h4, _$$7.h5) : Data_SortedMap_Node5(_$$3.h3, _$$3.h4, _$$3.h5, _$$4, _$$5, _$$6, _$$7.h3, _$$7.h4, _$$7.h5) ) )); const Data_SortedMap_merge3 = ( _$$3, _$$4, _$$5, _$$6, _$$7 ) => (( (_$$5.tag) == (2) ? ( (_$$3.tag) == (2) ? Data_SortedMap_Node7(_$$3.h3, _$$3.h4, _$$3.h5, _$$3.h6, _$$3.h7, _$$4, _$$5.h3, _$$5.h4, _$$5.h5, _$$5.h6, _$$5.h7, _$$6, _$$7) : Data_SortedMap_Node6(_$$3.h3, _$$3.h4, _$$3.h5, _$$4, _$$5.h3, _$$5.h4, _$$5.h5, _$$5.h6, _$$5.h7, _$$6, _$$7) ) : ( (_$$3.tag) == (2) ? Data_SortedMap_Node6(_$$3.h3, _$$3.h4, _$$3.h5, _$$3.h6, _$$3.h7, _$$4, _$$5.h3, _$$5.h4, _$$5.h5, _$$6, _$$7) : Data_SortedMap_Node5(_$$3.h3, _$$3.h4, _$$3.h5, _$$4, _$$5.h3, _$$5.h4, _$$5.h5, _$$6, _$$7) ) )); +const Lib_ProcessModule_invalidateModule_accumulate = ( _, _$$2, _$$3 ) => { const prev = Prelude_fromMaybe(Prelude_Nil(), Data_SortedMap_lookupMap$27(_$$3.h2, _$$2)); return Data_SortedMap_updateMap(_$$3.h2, Prelude__$3A$3A_(_$$3.h3, prev), _$$2); }; +const Lib_ProcessModule_invalidateModule_accumulate_getDeps = ( _, _$$3 ) => (Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Prelude__$2C_(_$$3.h2, eta)), _$$3.h3.h4)); const Lib_Util_getBaseDir = ( _$$0, _$$1, _$$2 ) => { let path; const _sc$$0 = Data_List1_splitFileName(_$$0); path = _sc$$0.h2; const dirs = Prelude_split(path, "/"); const sc$$6 = Lib_Util_getBaseDir_baseDir(_$$0, _$$1, _$$2, Prelude__$3C$3E$3C_(Prelude_Lin(), dirs), Prelude__$3C$3E$3C_(Prelude_Lin(), _$$2)); if ((sc$$6.tag) == (1)) { let base; const sc$$10 = (sc$$6.h2) == (""); switch (sc$$10) { case true: { base = "."; break; } case false: { base = sc$$6.h2; break; } } return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(base); } else { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, sc$$6.h2)), eta)))); } }; const Lib_Util_getBaseDir_baseDir = ( _, _1, _2, _$$4, _$$5 ) => (bouncer(Lib_Util_REC_getBaseDir_baseDir, { tag: 1, h0: _, h1: _1, h2: _2, h3: null, h4: _$$4, h5: _$$5 })); const Lib_Util_REC_getBaseDir_baseDir = ( arg ) => { if ((arg.h5.tag) == (1)) { if ((arg.h4.tag) == (1)) { const sc$$12 = (arg.h4.h2) == (arg.h5.h2); switch (sc$$12) { case true: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4.h1, h5: arg.h5.h1 }; case false: return { tag: 0, h0: Prelude_Left((((("module name ") + (Prelude_joinBy(".", arg.h2))) + (" doesn't match path ")) + (arg.h0)) + ("")) }; } } else { return { tag: 0, h0: Prelude_Left((((("module name ") + (Prelude_joinBy(".", arg.h2))) + (" doesn't match path ")) + (arg.h0)) + ("")) }; } } else { return { tag: 0, h0: Prelude_Right(Prelude_joinBy("/", Prelude__$3C$3E$3E_(arg.h4, Prelude_Nil()))) }; } }; @@ -870,9 +878,8 @@ const Data_List1_split1 = ( _$$0, _$$1 ) => { const sc$$2 = Prelude_split(_$$0, const Data_List1__$3A$3A$3A_ = ( h1, h2 ) => ({ tag: 0, h1: h1, h2: h2 }); const Prelude_Prelude_Eq$20$28Prelude_List$20BND$3A1$29$2C_$3D$3D_ = ( _$$1, _$$2, _$$3 ) => (bouncer(Prelude_REC_Prelude_Eq$20$28Prelude_List$20BND$3A1$29$2C_$3D$3D_, { tag: 1, h0: null, h1: _$$1, h2: _$$2, h3: _$$3 })); const Prelude_REC_Prelude_Eq$20$28Prelude_List$20BND$3A1$29$2C_$3D$3D_ = ( arg ) => { if ((arg.h3.tag) == (1)) { if ((arg.h2.tag) == (1)) { const sc$$10 = Prelude__$3D$3D_(arg.h1)(arg.h2.h1)(arg.h3.h1); switch (sc$$10) { case true: return { tag: 1, h0: null, h1: arg.h1, h2: arg.h2.h2, h3: arg.h3.h2 }; case false: return { tag: 0, h0: false }; } } else { return { tag: 0, h0: false }; } } else { return ( (arg.h2.tag) == (0) ? { tag: 0, h0: true } : { tag: 0, h0: false } ); } }; -const Main_writeSource = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Compile_compile, ( docs ) => { const src = Prelude_joinBy("\n", Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(Prelude__$3A$3A_("\"use strict\";", Prelude__$3A$3A_("const bouncer = (f,ini) => { let obj = ini; while (obj.tag) obj = f(obj); return obj.h0 };", Prelude_Nil())), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$5 ) => (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Prettier_noAlt(_$$5))), Prelude_Lin())), docs))); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Node_writeFile(_$$0, src)), ( $$sc ) => (( ($$sc.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_MkFC(_$$0, Lib_Common_MkBounds(0, 0, 0, 0)), $$sc.h2)), eta)))) ))); })); +const Main_writeSource = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Compile_compile, ( docs ) => { const src = Prelude_joinBy("\n", Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(Prelude__$3A$3A_("import fs from 'fs'", Prelude__$3A$3A_("const bouncer = (f,ini) => { let obj = ini; while (obj.tag) obj = f(obj); return obj.h0 };", Prelude_Nil())), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$5 ) => (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Prettier_noAlt(_$$5))), Prelude_Lin())), docs))); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Node_writeFile(_$$0, src)), ( $$sc ) => (( ($$sc.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_MkFC(_$$0, Lib_Common_MkBounds(0, 0, 0, 0)), $$sc.h2)), eta)))) ))); })); const Node_writeFile = (fn, content) => (w) => { - let fs = require('fs') let result try { fs.writeFileSync(fn, content, 'utf8') @@ -898,8 +905,8 @@ const Lib_Prettier_flatten = ( _$$0 ) => (bouncer(Lib_Prettier_REC_flatten, { ta const Lib_Prettier_REC_flatten = ( arg ) => { switch (arg.h0.tag) { case 5: return { tag: 1, h0: arg.h0.h0 }; case 4: return { tag: 0, h0: Lib_Prettier_Seq(Lib_Prettier_flatten(arg.h0.h0), Lib_Prettier_flatten(arg.h0.h1)) }; case 3: return { tag: 1, h0: arg.h0.h1 }; case 2: return { tag: 0, h0: Lib_Prettier_Text(arg.h0.h0) }; case 1: return { tag: 0, h0: Lib_Prettier_Text(" ") }; case 0: return { tag: 0, h0: Lib_Prettier_Empty }; } }; const Lib_Compile_altToDoc = ( _$$0 ) => { switch (_$$0.tag) { case 2: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("case"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Compile_expToDoc(_$$0.h1))), Lib_Prettier_Seq(Lib_Prettier_Text(":"), Lib_Compile_caseBody(_$$0.h2))); case 1: return Lib_Prettier_Seq(Lib_Prettier_Text("default"), Lib_Prettier_Seq(Lib_Prettier_Text(":"), Lib_Compile_caseBody(_$$0.h1))); case 0: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_Text("case"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Prettier_Text(Prelude_showInt(Prelude_natToInt(_$$0.h1))))), Lib_Prettier_Seq(Lib_Prettier_Text(":"), Lib_Compile_caseBody(_$$0.h2))); } }; const Lib_Compile_caseBody = ( _$$1 ) => { switch (_$$1.tag) { case 6: return Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_line, Lib_Compile_stmtToDoc(_$$1)), Lib_Prettier_Seq(Lib_Prettier_line, Lib_Prettier_Text("break;")))); case 3: return Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_line, Lib_Compile_stmtToDoc(_$$1))); default: return Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_line, Lib_Prettier_Seq(Lib_Prettier_Text("{"), Lib_Prettier_Nest(2, Lib_Prettier_Seq(Lib_Prettier_Seq(Lib_Prettier_line, Lib_Compile_stmtToDoc(_$$1)), Lib_Prettier_Seq(Lib_Prettier_line, Lib_Prettier_Text("break;")))))), Lib_Prettier_Seq(Lib_Prettier_line, Lib_Prettier_Text("}"))); } }; -const Lib_Compile_process = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Compile_getEntries(Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), _$$0), ( entries ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Data_IORef_primNewIORef(null, entries)), ( ref ) => { const foo = Lib_Ref2_MkRef(ref); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Compile_eraseEntries(Lib_Ref2_MkRef(ref)), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_LiftWhere_liftWhere(Lib_Ref2_MkRef(ref)), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Data_IORef_primReadIORef(null, ref)), ( entries1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_mapM(Lib_Types_Prelude_Monad$20Lib_Types_M, ( eta ) => (Lib_CompileExp_defToCExp(Lib_Ref2_MkRef(ref), eta)), Data_SortedMap_toList(entries1)), ( exprs ) => { const cexpMap = Data_SortedMap_foldMap(( _$$2 ) => (( _$$3 ) => (_$$2)), Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), exprs); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TCO_tailCallOpt(cexpMap), ( cexpMap1 ) => { const names = Lib_Compile_sortedNames(cexpMap1, _$$0); return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Compile_cexpToDoc(eta)), Prelude_mapMaybe(( x ) => (Data_SortedMap_lookupMap(x, cexpMap1)), names))); }); }))))))); })))))); -const Data_SortedMap_lookupMap = ( _$$2, _$$3 ) => (( (_$$3.tag) == (1) ? Data_SortedMap_lookupT23(_$$3.h3, _$$2, _$$3.h4) : Prelude_Nothing() )); +const Lib_Compile_process = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_foldlM(Lib_Types_Prelude_Monad$20Lib_Types_M, ( eta ) => (( eta1 ) => (Lib_Compile_getEntries(eta, eta1))), Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), _$$0), ( entries ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Data_IORef_primNewIORef(null, entries)), ( ref ) => { const foo = Lib_Ref2_MkRef(ref); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Compile_eraseEntries(Lib_Ref2_MkRef(ref)), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_LiftWhere_liftWhere(Lib_Ref2_MkRef(ref)), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Data_IORef_primReadIORef(null, ref)), ( entries1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_mapM(Lib_Types_Prelude_Monad$20Lib_Types_M, ( eta ) => (Lib_CompileExp_defToCExp(Lib_Ref2_MkRef(ref), eta)), Data_SortedMap_toList(entries1)), ( exprs ) => { const cexpMap = Data_SortedMap_foldMap(( _$$2 ) => (( _$$3 ) => (_$$2)), Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Lib_Common_Prelude_Ord$20Lib_Common_QName$2Ccompare(eta, eta1)))), exprs); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_TCO_tailCallOpt(cexpMap), ( cexpMap1 ) => { const names = Lib_Compile_sortedNames(cexpMap1, _$$0); return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_mapMaybe(( eta ) => (Lib_Compile_process_go(_$$0, cexpMap1, eta)), names)); }); }))))))); })))))); +const Lib_Compile_process_go = ( _, _$$2, _$$3 ) => (Prelude_Prelude_Monad$20Prelude_Maybe$2Cbind(Data_SortedMap_lookupMap(_$$3, _$$2), ( cexp ) => { const sc$$5 = Prelude_elem(Lib_Common_Prelude_Eq$20Lib_Common_QName, _$$3, _); switch (sc$$5) { case true: return Prelude_Just(Lib_Prettier_Seq(Lib_Prettier_Text("export"), Lib_Prettier_Seq(Lib_Prettier_Text(" "), Lib_Compile_cexpToDoc(cexp)))); case false: return Prelude_Just(Lib_Compile_cexpToDoc(cexp)); } })); const Lib_Compile_cexpToDoc = ( _$$0 ) => { const exp = Lib_Compile_maybeWrap(Lib_Compile_termToJS(Lib_Compile_emptyJSEnv, _$$0.h3, ( eta ) => (Lib_Compile_JReturn(eta)))); return Lib_Compile_stmtToDoc(Lib_Compile_JConst(Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0.h2), exp)); }; const Lib_Compile_JConst = ( h0, h1 ) => ({ tag: 2, h0: h0, h1: h1 }); const Lib_Compile_JReturn = ( h0 ) => ({ tag: 3, h0: h0 }); @@ -952,7 +959,8 @@ const Lib_Compile_JLet = ( h0, h1 ) => ({ tag: 4, h0: h0, h1: h1 }); const Lib_Compile_LitObject = ( h0 ) => ({ tag: 0, h0: h0 }); const Lib_Compile_Raw = ( h0 ) => ({ tag: 12, h0: h0 }); const Lib_Compile_maybeWrap = ( _$$0 ) => (( (_$$0.tag) == (3) ? _$$0.h0 : Lib_Compile_Apply(Lib_Compile_JLam(Prelude_Nil(), _$$0), Prelude_Nil()) )); -const Lib_Compile_sortedNames = ( _$$0, _$$1 ) => (Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h3), Prelude_filter(( _$$5 ) => (Prelude_not(_$$5.h2)), Lib_Compile_sortedNames_getBody_getNames_go(_$$0, _$$1, Prelude_Nil(), Prelude_Nil(), Prelude__$2C_(true, _$$1))))); +const Data_SortedMap_lookupMap = ( _$$2, _$$3 ) => (( (_$$3.tag) == (1) ? Data_SortedMap_lookupT23(_$$3.h3, _$$2, _$$3.h4) : Prelude_Nothing() )); +const Lib_Compile_sortedNames = ( _$$0, _$$1 ) => (Prelude_Prelude_Functor$20Prelude_List$2Cmap(( _$$2 ) => (_$$2.h3), Prelude_filter(( _$$5 ) => (Prelude_not(_$$5.h2)), Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames_go(_$$0, _$$1, Prelude_Nil(), eta, eta1))), Prelude_Nil(), Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Prelude__$2C_(true, eta)), _$$1))))); const Lib_Compile_sortedNames_getBody_getNames_go = ( _, _1, _$$5, _$$6, _$$7 ) => { let acc; const sc$$12 = (_$$7.h2) && ((Prelude_not(Prelude_elem(Prelude_Prelude_Eq$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(Prelude_Prelude_Eq$20Prelude_Bool, Lib_Common_Prelude_Eq$20Lib_Common_QName), Prelude__$2C_(false, _$$7.h3), _$$6))) && (Prelude_not(Prelude_elem(Prelude_Prelude_Eq$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(Prelude_Prelude_Eq$20Prelude_Bool, Lib_Common_Prelude_Eq$20Lib_Common_QName), Prelude__$2C_(false, _$$7.h3), _$$5)))); switch (sc$$12) { case true: { acc = Lib_Compile_sortedNames_getBody_getNames_go(_, _1, _$$5, _$$6, Prelude__$2C_(false, _$$7.h3)); break; } case false: { acc = _$$6; break; } } const sc$$13 = Prelude_elem(Prelude_Prelude_Eq$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(Prelude_Prelude_Eq$20Prelude_Bool, Lib_Common_Prelude_Eq$20Lib_Common_QName), _$$7, _$$5); switch (sc$$13) { case true: return acc; case false: { const sc$$14 = Prelude_elem(Prelude_Prelude_Eq$20$28Prelude__$D7_$20BND$3A3$20BND$3A2$29(Prelude_Prelude_Eq$20Prelude_Bool, Lib_Common_Prelude_Eq$20Lib_Common_QName), _$$7, acc); switch (sc$$14) { case true: return acc; case false: { const sc$$15 = Data_SortedMap_lookupMap$27(_$$7.h3, _); return ( (sc$$15.tag) == (1) ? acc : Prelude__$3A$3A_(_$$7, Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames_go(_, _1, Prelude__$3A$3A_(_$$7, _$$5), eta, eta1))), acc, Lib_Compile_sortedNames_getBody_getNames(_, _1, _$$7.h2, Prelude_Nil(), sc$$15.h1))) ); break; } } break; } } }; const Lib_Compile_sortedNames_getBody_getNames = ( _, _1, deep$$4, _$$5, _$$6 ) => (bouncer(Lib_Compile_REC_sortedNames_getBody_getNames, { tag: 1, h0: _, h1: _1, h2: null, h3: null, h4: deep$$4, h5: _$$5, h6: _$$6 })); const Lib_Compile_REC_sortedNames_getBody_getNames = ( arg ) => { switch (arg.h6.tag) { case 14: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h4, arg.h5, arg.h6.h1), h6: arg.h6.h2 }; case 13: return { tag: 0, h0: Prelude_Prelude_Concat$20$28Prelude_List$20BND$3A0$29$2C_$2B$2B_(Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Prelude__$2C_(arg.h4, eta)), arg.h6.h1), arg.h5) }; case 12: return { tag: 0, h0: Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h4, eta, eta1))), arg.h5, arg.h6.h2) }; case 11: return { tag: 0, h0: arg.h5 }; case 10: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h4, arg.h5, arg.h6.h1), h6: arg.h6.h2 }; case 9: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h4, arg.h5, arg.h6.h1), h6: arg.h6.h2 }; case 8: return { tag: 0, h0: arg.h5 }; case 7: return { tag: 0, h0: arg.h5 }; case 6: return { tag: 0, h0: Prelude__$3A$3A_(Prelude__$2C_(arg.h4, arg.h6.h0), arg.h5) }; case 5: return { tag: 0, h0: Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h4, eta, eta1))), arg.h5, Prelude__$3A$3A_(arg.h6.h0, Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_Compile_sortedNames_getBody(arg.h0, arg.h1, eta)), arg.h6.h1))) }; case 4: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: true, h5: Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h4, arg.h5, arg.h6.h1), h6: arg.h6.h0 }; case 3: { const sc$$10 = (Prelude_length$27(arg.h6.h1)) == (Prelude_length$27(arg.h6.h2)); switch (sc$$10) { case true: return ( (arg.h6.h1.tag) == (0) ? { tag: 0, h0: Prelude__$3A$3A_(Prelude__$2C_(true, arg.h6.h0), arg.h5) } : { tag: 0, h0: Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, true, eta, eta1))), Prelude__$3A$3A_(Prelude__$2C_(true, arg.h6.h0), arg.h5), arg.h6.h1) } ); case false: return { tag: 0, h0: Prelude_Prelude_Foldable$20Prelude_List$2Cfoldl(( eta ) => (( eta1 ) => (Lib_Compile_sortedNames_getBody_getNames(arg.h0, arg.h1, arg.h4, eta, eta1))), Prelude__$3A$3A_(Prelude__$2C_(arg.h4, arg.h6.h0), arg.h5), arg.h6.h1) }; } break; } case 2: switch (arg.h4) { case true: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6.h1 }; case false: return { tag: 0, h0: arg.h5 }; } break; case 1: return { tag: 1, h0: arg.h0, h1: arg.h1, h2: arg.h2, h3: arg.h3, h4: arg.h4, h5: arg.h5, h6: arg.h6.h1 }; case 0: return { tag: 0, h0: arg.h5 }; } }; @@ -1028,7 +1036,7 @@ const Data_IORef_primReadIORef = (_, ref) => (w) => Prelude_MkIORes(ref[0], w); const Lib_CompileExp_arityForName = ( _$$0, _$$1, _$$2 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Data_IORef_primReadIORef(null, _$$0.h2)), ( defs ) => { const sc$$4 = Data_SortedMap_lookupMap$27(_$$2, defs); if ((sc$$4.tag) == (1)) { return Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(_$$1, (("Name ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$2))) + (" not in scope"))), eta)))); } else { switch (sc$$4.h1.tag) { case 6: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$3A$3A_(true, Prelude__$3A$3A_(true, Prelude_Nil()))); case 5: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_replicate$27(sc$$4.h1.h1, true)); case 4: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_replicate$27(Prelude_intToNat(sc$$4.h1.h0), true)); case 3: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_CompileExp_lamArity(sc$$4.h1.h0)); case 2: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(sc$$4.h1.h2); case 1: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_replicate$27(Prelude_intToNat(sc$$4.h1.h0), true)); case 0: return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_Nil()); } } })); const Lib_CompileExp_lamArity = ( _$$0 ) => (( (_$$0.tag) == (3) ? Prelude__$3A$3A_(_$$0.h3, Lib_CompileExp_lamArity(_$$0.h4)) : Prelude_Nil() )); const Lib_CompileExp_CApp = ( h0, h1 ) => ({ tag: 4, h0: h0, h1: h1 }); -const Lib_CompileExp_compileTerm_applySucc = ( _, _1, _2, _3, _4, _$$6 ) => (( (_$$6.tag) == (1) ? ( (_$$6.h2.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_CompileExp_CPrimOp("+", Lib_CompileExp_CLit(Lib_Types_LInt(1)), _$$6.h1)) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("overapplied Succ ") + (Lib_Types_Prelude_Show$20Lib_Types_Tm$2Cshow(_1))) + (""))), eta)))) ) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_CompileExp_CLam("x", Lib_CompileExp_CPrimOp("+", Lib_CompileExp_CLit(Lib_Types_LInt(1)), Lib_CompileExp_CBnd(0)))) )); +const Lib_CompileExp_compileTerm_applySucc = ( _, _1, _2, _3, _4, _$$6 ) => (( (_$$6.tag) == (1) ? ( (_$$6.h2.tag) == (0) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_CompileExp_CPrimOp("+", Lib_CompileExp_CLit(Lib_Types_LInt(1)), _$$6.h1)) : Lib_Types_MkM(( _5 ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm$2CgetFC(_1), (("overapplied Succ ") + (Lib_Types_Prelude_Show$20Lib_Types_Tm$2Cshow(_1))) + (""))), eta)))) ) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_CompileExp_CLam("x", Lib_CompileExp_CPrimOp("+", Lib_CompileExp_CLit(Lib_Types_LInt(1)), Lib_CompileExp_CBnd(0)))) )); const Lib_CompileExp_compilePrimOp = ( _$$0, _$$1 ) => { if ((_$$1.tag) == (1)) { if ((_$$1.h2.tag) == (1)) { if ((_$$1.h2.h2.tag) == (1)) { if ((_$$1.h2.h2.h2.tag) == (0)) { switch (_$$0) { case "Prelude.jsEq": return Prelude_Just(Lib_CompileExp_CPrimOp("==", _$$1.h2.h1, _$$1.h2.h2.h1)); default: return Prelude_Nothing(); } } else { return Prelude_Nothing(); } } else { switch (_$$0) { case "Prelude.addString": return Prelude_Just(Lib_CompileExp_CPrimOp("+", _$$1.h1, _$$1.h2.h1)); case "Prelude.addInt": return Prelude_Just(Lib_CompileExp_CPrimOp("+", _$$1.h1, _$$1.h2.h1)); case "Prelude.mulInt": return Prelude_Just(Lib_CompileExp_CPrimOp("*", _$$1.h1, _$$1.h2.h1)); case "Prelude.subInt": return Prelude_Just(Lib_CompileExp_CPrimOp("-", _$$1.h1, _$$1.h2.h1)); case "Prelude._&&_": return Prelude_Just(Lib_CompileExp_CPrimOp("&&", _$$1.h1, _$$1.h2.h1)); case "Prelude._||_": return Prelude_Just(Lib_CompileExp_CPrimOp("||", _$$1.h1, _$$1.h2.h1)); case "Prelude.divInt": return Prelude_Just(Lib_CompileExp_CPrimOp("|", Lib_CompileExp_CPrimOp("/", _$$1.h1, _$$1.h2.h1), Lib_CompileExp_CLit(Lib_Types_LInt(0)))); default: return Prelude_Nothing(); } } } else { return Prelude_Nothing(); } } else { return Prelude_Nothing(); } }; const Lib_CompileExp_compileTerm_numAltP_enumAlt_isInfo_isDef_doNumCon_fancyCons = ( _, _1, _2, _3, _4, _$$11, _$$12 ) => { const sc$$13 = Lib_CompileExp_any(( eta ) => (Lib_CompileExp_compileTerm_numAltP(_, _1, _2, _3, _4, eta)), _$$12); switch (sc$$13) { case true: return Lib_CompileExp_compileTerm_numAltP_enumAlt_isInfo_isDef_doNumCon(_, _1, _2, _3, _4, _$$11, _$$12); case false: return Prelude_Prelude_Functor$20Prelude_List$2Cmap(( eta ) => (Lib_CompileExp_compileTerm_numAltP_enumAlt(_, _1, _2, _3, _4, eta)), _$$12); } }; const Lib_CompileExp_compileTerm_numAltP_enumAlt = ( _, _1, _2, _3, _4, _$$7 ) => { if ((_$$7.tag) == (0)) { switch (_$$7.h2) { case 5: return Lib_CompileExp_CLitAlt(Lib_Types_LBool(false), _$$7.h4); case 4: return Lib_CompileExp_CLitAlt(Lib_Types_LBool(true), _$$7.h4); case 3: return Lib_CompileExp_CLitAlt(Lib_Types_LInt(Prelude_natToInt(_$$7.h0)), _$$7.h4); default: return _$$7; } } else { return _$$7; } }; @@ -1074,13 +1082,15 @@ const Lib_Eval_zonk = ( _$$0, _$$1, _$$2, _$$3 ) => { const env$27 = Prelude__$3 const Lib_Eval_zonkApp = ( _$$0, _$$1, _$$2, _$$3, _$$4 ) => { switch (_$$3.tag) { case 4: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_zonk(_$$0, _$$1, _$$2, _$$3.h2), ( u$27 ) => (Lib_Eval_zonkApp(_$$0, _$$1, _$$2, _$$3.h1, Prelude__$3A$3A_(u$27, _$$4)))); case 2: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_lookupMeta(_$$3.h1), ( meta ) => (( (meta.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Eval_eval(_$$2, eta)), _$$4), ( sp$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _ ) => ((((((("zonk ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$3.h1))) + (" -> ")) + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(meta.h2))) + (" spine ")) + (Prelude_Prelude_Show$20$28Prelude_List$20BND$3A1$29$2Cshow(Lib_Types_Prelude_Show$20Lib_Types_Val, sp$27))) + (""))), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(meta.h2, Prelude__$3C$3E$3C_(Prelude_Lin(), sp$27)), ( foo ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_log(2, ( _1 ) => ((("-> result is ") + (Lib_Types_Prelude_Show$20Lib_Types_Val$2Cshow(foo))) + (""))), ( _1 ) => (Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Eval_tweakFC(_$$3.h0, eta)), Lib_Eval_quote(_$$1, foo)))))))))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Eval_appSpine(_$$3, _$$4)) ))); default: return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_zonk(_$$0, _$$1, _$$2, _$$3), ( t$27 ) => { const sc$$7 = Lib_Eval_zonkApp_inlineDef(_$$0, _$$1, _$$2, _$$3, _$$4, t$27); return ( (sc$$7.tag) == (0) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Lib_Eval_eval(_$$2, eta)), _$$4), ( sp$27 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_eval(_$$2, sc$$7.h1), ( vtm ) => (Lib_Types_catchError(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_vappSpine(vtm, Prelude__$3C$3E$3C_(Prelude_Lin(), sp$27)), ( foo ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Eval_quote(_$$1, foo), ( t$271 ) => (Lib_Eval_zonk(_$$0, _$$1, _$$2, t$271))))), ( _ ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Eval_appSpine(t$27, _$$4)))))))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Lib_Eval_appSpine(t$27, _$$4)) ); }); } }; const Lib_Eval_appSpine = ( _$$0, _$$1 ) => (bouncer(Lib_Eval_REC_appSpine, { tag: 1, h0: _$$0, h1: _$$1 })); const Lib_Eval_REC_appSpine = ( arg ) => (( (arg.h1.tag) == (1) ? { tag: 1, h0: Lib_Types_App(Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm$2CgetFC(arg.h0), arg.h0, arg.h1.h1), h1: arg.h1.h2 } : { tag: 0, h0: arg.h0 } )); -const Lib_Eval_zonkApp_inlineDef = ( _, _1, _2, _3, _4, _$$6 ) => { if ((_$$6.tag) == (1)) { const sc$$9 = Lib_TopContext_lookup(_$$6.h1, _); if ((sc$$9.tag) == (0)) { if ((sc$$9.h1.h3.tag) == (3)) { const sc$$18 = Prelude_elem(Lib_Types_Prelude_Eq$20Lib_Types_EFlag, true, sc$$9.h1.h4); switch (sc$$18) { case true: return Prelude_Just(sc$$9.h1.h3.h0); case false: return Prelude_Nothing(); } } else { return Prelude_Nothing(); } } else { return Prelude_Nothing(); } } else { return Prelude_Nothing(); } }; +const Lib_Eval_zonkApp_inlineDef = ( _, _1, _2, _3, _4, _$$6 ) => { if ((_$$6.tag) == (1)) { const sc$$9 = Lib_TopContext_lookup(_$$6.h1, _); if ((sc$$9.tag) == (0)) { if ((sc$$9.h1.h3.tag) == (3)) { const sc$$18 = Prelude_elem(Lib_Types_Prelude_Eq$20Lib_Types_EFlag, 1, sc$$9.h1.h4); switch (sc$$18) { case true: return Prelude_Just(sc$$9.h1.h3.h0); case false: return Prelude_Nothing(); } } else { return Prelude_Nothing(); } } else { return Prelude_Nothing(); } } else { return Prelude_Nothing(); } }; const Lib_Eval_tweakFC = ( _$$0, _$$1 ) => { switch (_$$1.tag) { case 11: return Lib_Types_Erased(_$$0); case 10: return Lib_Types_Lit(_$$0, _$$1.h1); case 9: return Lib_Types_LetRec(_$$0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case 8: return Lib_Types_Let(_$$0, _$$1.h1, _$$1.h2, _$$1.h3); case 7: return Lib_Types_Case(_$$0, _$$1.h1, _$$1.h2); case 6: return Lib_Types_Pi(_$$0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4, _$$1.h5); case 5: return Lib_Types_UU(_$$0); case 4: return Lib_Types_App(_$$0, _$$1.h1, _$$1.h2); case 3: return Lib_Types_Lam(_$$0, _$$1.h1, _$$1.h2, _$$1.h3, _$$1.h4); case 2: return Lib_Types_Meta(_$$0, _$$1.h1); case 1: return Lib_Types_Ref(_$$0, _$$1.h1); case 0: return Lib_Types_Bnd(_$$0, _$$1.h1); } }; const Lib_Eval_zonkBind = ( _$$0, _$$1, _$$2, _$$3 ) => (Lib_Eval_zonk(_$$0, (1) + (_$$1), Prelude__$3A$3A_(Lib_Types_VVar(Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm$2CgetFC(_$$3), _$$1, Prelude_Lin()), _$$2), _$$3)); const Lib_Eval_zonkAlt = ( _$$0, _$$1, _$$2, _$$3 ) => { switch (_$$3.tag) { case 2: return Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_CaseLit(_$$3.h0, eta)), Lib_Eval_zonkBind(_$$0, _$$1, _$$2, _$$3.h1)); case 1: return Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_CaseCons(_$$3.h0, _$$3.h1, eta)), Lib_Eval_zonkAlt_go(_$$0, _$$1, _$$2, _$$3, _$$3.h0, _$$3.h1, _$$3.h2, _$$1, _$$2, _$$3.h1, _$$3.h2)); case 0: return Lib_Types_Prelude_Functor$20Lib_Types_M$2Cmap(( eta ) => (Lib_Types_CaseDefault(eta)), Lib_Eval_zonkBind(_$$0, _$$1, _$$2, _$$3.h0)); } }; const Lib_Eval_zonkAlt_go = ( _, _1, _2, _3, _4, _5, _6, _$$8, _$$9, _$$10, _$$11 ) => (bouncer(Lib_Eval_REC_zonkAlt_go, { tag: 1, h0: _, h1: _1, h2: _2, h3: _3, h4: _4, h5: _5, h6: _6, h7: null, h8: _$$8, h9: _$$9, h10: _$$10, h11: _$$11 })); const Lib_Eval_REC_zonkAlt_go = ( arg ) => (( (arg.h10.tag) == (1) ? { tag: 1, 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: (1) + (arg.h8), h9: Prelude__$3A$3A_(Lib_Types_VVar(Lib_Types_Lib_Common_HasFC$20Lib_Types_Tm$2CgetFC(arg.h11), arg.h8, Prelude_Lin()), arg.h9), h10: arg.h10.h2, h11: arg.h11 } : { tag: 0, h0: Lib_Eval_zonk(arg.h0, arg.h8, arg.h9, arg.h6) } )); -const Lib_Compile_compile = Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const sc$$1 = Lib_TopContext_lookupRaw("main", top); return ( (sc$$1.tag) == (1) ? Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, "No main function found")), eta)))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Compile_process(sc$$1.h1.h1), ( tmp ) => { const exec = Lib_Compile_stmtToDoc(Lib_Compile_JPlain(Lib_Compile_Apply(Lib_Compile_Var(Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(sc$$1.h1.h1)), Prelude_Nil()))); return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_reverse()(Prelude__$3A$3A_(exec, tmp))); }) ); }); +const Lib_Compile_compile_getExports = ( _$$1, _$$2 ) => (bouncer(Lib_Compile_REC_compile_getExports, { tag: 1, h0: null, h1: _$$1, h2: _$$2 })); +const Lib_Compile_REC_compile_getExports = ( arg ) => { if ((arg.h2.tag) == (1)) { let acc; const sc$$13 = Prelude_elem(Lib_Types_Prelude_Eq$20Lib_Types_EFlag, 2, arg.h2.h1.h4); switch (sc$$13) { case true: { acc = Prelude__$3A$3A_(arg.h2.h1.h1, arg.h1); break; } case false: { acc = arg.h1; break; } } return { tag: 1, h0: arg.h0, h1: acc, h2: arg.h2.h2 }; } else { return { tag: 0, h0: arg.h1 }; } }; +const Lib_Compile_compile = Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const exports = Lib_Compile_compile_getExports(Prelude_Nil(), Data_SortedMap_listValues(top.h5)); const mainName = Lib_Common_QN(top.h4, "main"); const main = Lib_TopContext_lookup(mainName, top); const todo = ( (main.tag) == (1) ? exports : Prelude__$3A$3A_(mainName, exports) ); return Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Compile_process(todo), ( defs ) => { const sc$$7 = Lib_TopContext_lookup(mainName, top); if ((sc$$7.tag) == (1)) { return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_reverse()(defs)); } else { const exec = Lib_Compile_stmtToDoc(Lib_Compile_JPlain(Lib_Compile_Apply(Lib_Compile_Var(Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(mainName)), Prelude_Nil()))); return Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude_reverse()(Prelude__$3A$3A_(exec, defs))); } }); }); const Main_getDoc = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => (Prelude_for_(Prelude_Prelude_Traversable$20Prelude_List, Lib_Types_Prelude_Applicative$20Lib_Types_M, Lib_TopContext_lookupAll(_$$0, top), ( e ) => (Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn((((("") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(e.h1))) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), e.h2))), Prelude_Lin()))) + ("")))))))); const Main_browseTop = ( _$$0 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( top ) => { const ns = (_$$0.h0) + ((".") + (_$$0.h1)); const sc$$6 = Data_SortedMap_lookupMap$27(ns, top.h0); return ( (sc$$6.tag) == (0) ? Main_browseTop_go(_$$0, _$$0.h0, _$$0.h1, Data_SortedMap_listValues(sc$$6.h1.h1)) : Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn((("module ") + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$0))) + (" not loaded"))) ); })); const Main_browseTop_go = ( _, _1, _2, _$$4 ) => (( (_$$4.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn((((((("") + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(_$$4.h1.h0))) + (" ")) + (Lib_Common_Prelude_Show$20Lib_Common_QName$2Cshow(_$$4.h1.h1))) + (" : ")) + (Lib_Prettier_layout(Lib_Prettier_best(90, 0, Lib_Prettier_noAlt(Lib_Types_pprint$27(0, Prelude_Nil(), _$$4.h1.h2))), Prelude_Lin()))) + (""))), ( _3 ) => (Main_browseTop_go(_, _1, _2, _$$4.h2))) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) )); @@ -1111,13 +1121,13 @@ const Lib_ReplParser_REC_parseCommand_lookup = ( arg ) => { if ((arg.h2.tag) == const Lib_ReplParser_parseCommand = Lib_Parser_Impl_Prelude_Monad$20Lib_Parser_Impl_Parser$2Cbind(Lib_Parser_ident, ( key ) => { const sc$$2 = Lib_ReplParser_parseCommand_lookup(key, Lib_ReplParser_commands); if ((sc$$2.tag) == (0)) { switch (sc$$2.h1.h2) { case 4: return Lib_Parser_Impl_Prelude_Functor$20Lib_Parser_Impl_Parser$2Cmap(sc$$2.h1.h3, Lib_ReplParser_replQN); case 3: return Lib_Parser_Impl_Prelude_Functor$20Lib_Parser_Impl_Parser$2Cmap(sc$$2.h1.h3, Lib_Parser_optional(Lib_ReplParser_replInt)); case 2: return Lib_Parser_Impl_Prelude_Functor$20Lib_Parser_Impl_Parser$2Cmap(sc$$2.h1.h3, Lib_Parser_Impl_Prelude_Alternative$20Lib_Parser_Impl_Parser$2C_$3C$7C$3E_(Lib_Parser_ident, Lib_Parser_uident)); case 1: return Lib_Parser_Impl_Prelude_Functor$20Lib_Parser_Impl_Parser$2Cmap(sc$$2.h1.h3, Lib_ReplParser_replString); case 0: return Lib_Parser_Impl_Prelude_Applicative$20Lib_Parser_Impl_Parser$2Creturn(sc$$2.h1.h3); } } else { return Lib_Parser_Impl_fail("Unknown command"); } }); const Lib_Parser_Impl_parse = ( _$$1, _$$2, _$$3 ) => { const sc$$4 = Lib_Parser_Impl_runP(_$$2)(Lib_Common_emptyBounds)(_$$3)(false)(Data_SortedMap_EmptyMap(( eta ) => (( eta1 ) => (Prelude_Prelude_Ord$20Prim_String$2Ccompare(eta, eta1)))))(Lib_Common_MkFC(_$$1, Lib_Common_MkBounds(-1, -1, -1, -1))); return ( (sc$$4.tag) == (1) ? Prelude_Left(sc$$4.h1) : ( (sc$$4.h3.tag) == (0) ? Prelude_Right(sc$$4.h1) : Prelude_Left(Lib_Parser_Impl_perror(_$$1, sc$$4.h3, "Extra toks")) ) ); }; const Node_readLine = (w) => { - let {readSync} = require('fs'); - let buf = Buffer.alloc(1024); + let {readSync} = fs; + let buf = new Uint8Array(1024); let p = 0 while (readSync(0, buf, p, 1, null)) { if (buf[p++] == 10) return Prelude_MkIORes(Prelude_Right(new TextDecoder().decode(buf.slice(0,p))),w); if (p + 10 > buf.length) { - let tmp = Buffer.alloc(buf.length * 1.5); + let tmp = new Uint8Array(buf.length * 1.5); tmp.set(buf); buf = tmp; } @@ -1125,18 +1135,18 @@ const Node_readLine = (w) => { return Prelude_MkIORes(Prelude_Left("EOF")); }; const Node_putStr = (s) => (w) => { - let {writeSync} = require('fs'); + let {writeSync} = fs; let buf = new TextEncoder().encode(s); writeSync(1, buf); return Prelude_MkIORes(Prelude_MkUnit, w); }; const Main_runRepl = Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Node_putStr("> ")), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Node_readLine), ( $$sc ) => (( ($$sc.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_runString($$sc.h2), ( _1 ) => (Main_runRepl)) : Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) ))))); -const Revision_gitRevision = "3201139"; +const Revision_gitRevision = "c54b856"; const Main_replHeader = Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn((("Newt REPL (") + (Revision_gitRevision)) + (")\n"))); const Main_cmdLine = ( _$$0 ) => (bouncer(Main_REC_cmdLine, { tag: 1, h0: _$$0 })); -const Main_REC_cmdLine = ( arg ) => { if ((arg.h0.tag) == (1)) { switch (arg.h0.h1) { case "--top": return { tag: 1, h0: arg.h0.h2 }; case "-v": return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, (1) + (tc.h6), tc.h7, tc.h8)))), ( _ ) => (Main_cmdLine(arg.h0.h2))) }; case "-o": { if ((arg.h0.h2.tag) == (1)) { return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_cmdLine(arg.h0.h2.h2), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Prelude_Prelude_Alternative$20Prelude_Maybe$2C_$3C$7C$3E_($$sc.h2, Prelude_Just(arg.h0.h2.h1)), $$sc.h3)))) }; } else { const sc$$4 = Prelude_isSuffixOf(".newt", arg.h0.h1); switch (sc$$4) { case true: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_cmdLine(arg.h0.h2), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_($$sc.h2, Prelude__$3A$3A_(arg.h0.h1, $$sc.h3))))) }; default: return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("Bad argument ") + (arg.h0.h1)) + (""))), eta)))) }; } } break; } default: { const sc$$4 = Prelude_isSuffixOf(".newt", arg.h0.h1); switch (sc$$4) { case true: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_cmdLine(arg.h0.h2), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_($$sc.h2, Prelude__$3A$3A_(arg.h0.h1, $$sc.h3))))) }; default: return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("Bad argument ") + (arg.h0.h1)) + (""))), eta)))) }; } break; } } } else { return { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Prelude_Nothing(), Prelude_Nil())) }; } }; +const Main_REC_cmdLine = ( arg ) => { if ((arg.h0.tag) == (1)) { switch (arg.h0.h1) { case "--top": return { tag: 1, h0: arg.h0.h2 }; case "-v": return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_getTop, ( tc ) => (Lib_Types_putTop(Lib_Types_MkTop(tc.h0, tc.h1, tc.h2, tc.h3, tc.h4, tc.h5, tc.h6, (1) + (tc.h7), tc.h8, tc.h9)))), ( _ ) => (Main_cmdLine(arg.h0.h2))) }; case "-o": { if ((arg.h0.h2.tag) == (1)) { return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_cmdLine(arg.h0.h2.h2), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Prelude_Prelude_Alternative$20Prelude_Maybe$2C_$3C$7C$3E_($$sc.h2, Prelude_Just(arg.h0.h2.h1)), $$sc.h3)))) }; } else { const sc$$4 = Prelude_isSuffixOf(".newt", arg.h0.h1); switch (sc$$4) { case true: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_cmdLine(arg.h0.h2), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_($$sc.h2, Prelude__$3A$3A_(arg.h0.h1, $$sc.h3))))) }; default: return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("Bad argument ") + (arg.h0.h1)) + (""))), eta)))) }; } } break; } default: { const sc$$4 = Prelude_isSuffixOf(".newt", arg.h0.h1); switch (sc$$4) { case true: return { tag: 0, h0: Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_cmdLine(arg.h0.h2), ( $$sc ) => (Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_($$sc.h2, Prelude__$3A$3A_(arg.h0.h1, $$sc.h3))))) }; default: return { tag: 0, h0: Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, (("Bad argument ") + (arg.h0.h1)) + (""))), eta)))) }; } break; } } } else { return { tag: 0, h0: Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(Prelude__$2C_(Prelude_Nothing(), Prelude_Nil())) }; } }; const Prelude_isSuffixOf = (pfx, s) => s.endsWith(pfx) ? Prelude_True : Prelude_False; const Node_getArgs = (w) => Prelude_MkIORes( Prelude_arrayToList(null, process.argv.slice(1)), w); const Main_main$27 = Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Node_getArgs), ( $$sc ) => (( ($$sc.tag) == (1) ? ( ($$sc.h2.tag) == (1) ? Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_cmdLine($$sc.h2), ( $$sc1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_Prelude_Traversable$20Prelude_List$2Ctraverse(Lib_Types_Prelude_Applicative$20Lib_Types_M, ( eta ) => (Main_processFile(eta)), $$sc1.h3), ( _ ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Prelude_when(Lib_Types_Prelude_Applicative$20Lib_Types_M, Prelude_elem(Prelude_Prelude_Eq$20Prim_String, "--top", $$sc.h2), ( _1 ) => (Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_jsonTopContext, ( json ) => (Lib_Types_Prelude_HasIO$20Lib_Types_M$2CliftIO(Prelude_primPutStrLn((("TOP:") + (Lib_Common_renderJson(json))) + (""))))))), ( _1 ) => (( ($$sc1.h2.tag) == (1) ? Lib_Types_Prelude_Applicative$20Lib_Types_M$2Creturn(0) : Main_writeSource($$sc1.h2.h1) ))))))) : Lib_Types_Prelude_Monad$20Lib_Types_M$2Cbind(Main_replHeader, ( _ ) => (Main_runRepl)) ) : Lib_Types_MkM(( _ ) => (( eta ) => (Prelude_MkIORes(Prelude_Left(Lib_Common_E(Lib_Common_emptyFC, "error reading args")), eta)))) ))); -const Main_main = ( eta ) => (Prelude_Prelude_Monad$20Prelude_IO$2Cbind(Lib_Types__runM(Main_main$27)(Lib_TopContext_emptyTop), ( $$sc ) => (( ($$sc.tag) == (1) ? Prelude_primPutStrLn("done") : Node_exitFailure(null, (((("ERROR at ") + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(Lib_Types_Lib_Common_HasFC$20Lib_Common_Error$2CgetFC($$sc.h2)))) + (": ")) + (Lib_Types_errorMsg($$sc.h2))) + ("")) )), eta)); +export const Main_main = ( eta ) => (Prelude_Prelude_Monad$20Prelude_IO$2Cbind(Lib_Types__runM(Main_main$27)(Lib_TopContext_emptyTop), ( $$sc ) => (( ($$sc.tag) == (1) ? Prelude_primPutStrLn("done") : Node_exitFailure(null, (((("ERROR at ") + (Lib_Common_Prelude_Show$20Lib_Common_FC$2Cshow(Lib_Types_Lib_Common_HasFC$20Lib_Common_Error$2CgetFC($$sc.h2)))) + (": ")) + (Lib_Types_errorMsg($$sc.h2))) + ("")) )), eta)); Main_main(); \ No newline at end of file diff --git a/newt-vscode-lsp/src/lsp.ts b/newt-vscode-lsp/src/lsp.ts index 5158443..c60b642 100644 --- a/newt-vscode-lsp/src/lsp.ts +++ b/newt-vscode-lsp/src/lsp.ts @@ -65,6 +65,7 @@ async function runChange() { console.log('CHECK', doc.uri, 'in', end - start); await sleep(1); if (!changes.find(ch => ch.uri === uri)) { + console.log('SEND', diagnostics.length, 'for', uri) connection.sendDiagnostics({ uri, diagnostics }) } else { console.log('STALE result not sent for', uri) diff --git a/playground/build b/playground/build index de7b26e..dc68271 100755 --- a/playground/build +++ b/playground/build @@ -1,9 +1,9 @@ #!/bin/sh mkdir -p public echo build newt worker -esbuild src/worker.ts --bundle --format=esm > public/worker.js -esbuild src/frame.ts --bundle --format=esm > public/frame.js +esbuild src/worker.ts --bundle --format=esm --platform=browser > public/worker.js +esbuild src/frame.ts --bundle --format=esm --platform=browser > public/frame.js echo copy newt -cp ../newt.js public +cp ../newt.js src/newt.js cp -r static/* public (cd samples && zip -r ../public/files.zip .) diff --git a/playground/package.json b/playground/package.json index 4f3bb89..89c607a 100644 --- a/playground/package.json +++ b/playground/package.json @@ -8,6 +8,9 @@ "build": "tsc && vite build", "preview": "vite preview" }, + "browser": { + "fs": "./src/fs.ts" + }, "devDependencies": { "@codemirror/theme-one-dark": "^6.1.2", "esbuild": "^0.25.0", diff --git a/playground/src/emul.ts b/playground/src/emul.ts index 52f89ba..7ce7df0 100644 --- a/playground/src/emul.ts +++ b/playground/src/emul.ts @@ -7,6 +7,8 @@ export interface Handle { buf: Uint8Array; } +// Some of this was written for Idris and is not used by newt + interface Process { argv: string[]; platform: string; @@ -49,6 +51,9 @@ export let shim: NodeShim = { }, writeSync(fd: number, data: string) { shim.stdout += data; + }, + readSync() { + return 0; } }, process: { diff --git a/playground/src/frame.ts b/playground/src/frame.ts index 2c1b0fe..7523221 100644 --- a/playground/src/frame.ts +++ b/playground/src/frame.ts @@ -14,15 +14,18 @@ const shim = { throw new Error(`${fn} not found`); } }, + writeSync: (fd: number, msg: string) => console.log(msg) }, }; // we intercept require to return our fake node modules declare global { interface Window { require: (x: string) => any; + fs: any; } } const requireStub: any = (x: string) => (shim as any)[x]; +self.fs = shim.fs; self.require = requireStub; self.process = { platform: "linux", diff --git a/playground/src/main.ts b/playground/src/main.ts index 1a1bea9..2f353d6 100644 --- a/playground/src/main.ts +++ b/playground/src/main.ts @@ -39,6 +39,12 @@ function mdline2nodes(s: string) { return cs } +function bundle(js: string) { + js = js.replace(/^import.*\n/g, ''); + js = js.replace(/\nexport /g, '\n'); + return js; +} + function md2nodes(md: string) { let rval: VNode[] = [] let list: VNode[] | undefined @@ -77,7 +83,7 @@ if (!state.javascript.value) { // maybe send fileName, src? await ipc.sendMessage("save", [fileName, src]); let js = await ipc.sendMessage("compile", [fileName]); - state.javascript.value = js; + state.javascript.value = bundle(js); } } @@ -248,7 +254,7 @@ const language: EditorDelegate = { }); } // less flashy version - ipc.sendMessage("compile", [fileName]).then(js => state.javascript.value = js); + ipc.sendMessage("compile", [fileName]).then(js => state.javascript.value = bundle(js)); return diags; } catch (e) { console.log("ERR", e); diff --git a/playground/src/worker.ts b/playground/src/worker.ts index 4b1314e..6e316da 100644 --- a/playground/src/worker.ts +++ b/playground/src/worker.ts @@ -1,9 +1,12 @@ import { shim } from "./emul"; import { API, Message, ResponseMSG } from "./ipc"; import { archive, preload } from "./preload"; +import { Main_main } from './newt'; const LOG = console.log + console.log = (m) => { + LOG(m) shim.stdout += "\n" + m; }; @@ -47,4 +50,3 @@ const handleMessage = async function (ev: { data: Message(_: ResponseMSG) => void = postMessage; onmessage = handleMessage; -importScripts("newt.js"); diff --git a/src/Commands.newt b/src/Commands.newt index 47fb1e4..0540e51 100644 --- a/src/Commands.newt +++ b/src/Commands.newt @@ -25,17 +25,22 @@ decomposeName fn = then go (x :: acc) xs else (joinBy "/" (xs :< x <>> Nil), joinBy "." acc) + +switchModule : FileSource → String → M ModContext +switchModule repo modns = do + addPrimitives + modifyTop [ metaCtx := MC emptyMap Nil 0 CheckAll ] + mod <- processModule emptyFC repo Nil modns + -- FIXME keep these in ModContext, drop from TopContext + modifyTop [ defs := mod.modDefs; metaCtx := mod.modMetaCtx; ops := mod.ctxOps; imported := mod.modDeps; infos := mod.modInfos; ns := modns; errors := mod.modErrors ] + top <- getTop + pure mod + -- The cheap version of type at point, find the token, lookup in global context -- Later we will either get good FC for entries or scan them all and build a cache. getHoverInfo : FileSource → String → Int → Int → M (Maybe (String × FC)) getHoverInfo repo modns row col = do - -- REVIEW consider not running processModule and returning empty if it hasn't been processed yet - -- For Elab.newt, there would be a 1.5s delay... - mod <- processModule emptyFC repo Nil modns - - -- not necessarily loaded into top... (Maybe push this down into that branch of processModule) - -- FIXME - fragile - this is why we don't want this stuff directly in TopContext - modifyTop [ defs := mod.modDefs; metaCtx := mod.modMetaCtx; ops := mod.ctxOps; imported := mod.modDeps; infos := mod.modInfos] + mod <- switchModule repo modns top <- getTop -- Find the token at the point @@ -154,6 +159,7 @@ getCaseSplit row col fc@(MkFC uri (MkBounds sr sc er ec)) ctx nm scty = do ty <- quote (length' ctx.env) scty cons <- filterM (checkCase ctx nm scty) cons let names = map fst cons + putStrLn "Make splits for \{show names}" edits <- makeEdits fc names True pure $ Just $ CaseSplitAction edits @@ -163,9 +169,7 @@ posInFC row col (MkFC _ (MkBounds sr sc er ec)) = (sr <= row && row <= er) && (s getActions : FileSource → String → Int → Int → M (List CodeAction) getActions repo modns row col = do - mod <- processModule emptyFC repo Nil modns - -- not necessarily loaded into top... (Maybe push this down into that branch of processModule) - modifyTop [ defs := mod.modDefs; metaCtx := mod.modMetaCtx; ops := mod.ctxOps; imported := mod.modDeps; infos := mod.modInfos] + mod <- switchModule repo modns top <- getTop let xx = filter (posInFC row col ∘ getFC) top.infos putStrLn "Filter got \{show $ length' xx}" diff --git a/src/LSP.newt b/src/LSP.newt index e080dac..341cebe 100644 --- a/src/LSP.newt +++ b/src/LSP.newt @@ -122,6 +122,7 @@ codeActionInfo uri line col = unsafePerformIO $ do putStrLn "\{show $ length' actions} actions" pure actions).runM st.topContext | Left err => do + putStrLn "ACTIONS ERROR" putStrLn $ showError "" err pure js_null modifyIORef state $ [ topContext := top ] @@ -195,8 +196,8 @@ checkFile fn = unsafePerformIO $ do (Right (top, json)) <- (do modifyTop [ errors := Nil ] putStrLn "processModule" - _ <- processModule emptyFC lspFileSource Nil modName - pure MkUnit + _ <- switchModule lspFileSource modName + -- pull out errors and infos top <- getTop let errors = map (errorToDiag) top.errors @@ -215,4 +216,7 @@ checkFile fn = unsafePerformIO $ do -- Dummy main function with references to force functions into ouput file. -- but we don't get `export` on it.. -- #export updateFile checkFile hoverInfo -pfunc main uses (updateFile checkFile hoverInfo codeActionInfo) : IO Unit := `() => {}` + +#export updateFile checkFile hoverInfo codeActionInfo + +-- pfunc main uses (updateFile checkFile hoverInfo codeActionInfo) : IO Unit := `() => {}` diff --git a/src/Lib/Compile.newt b/src/Lib/Compile.newt index eded0ca..4ea3a1c 100644 --- a/src/Lib/Compile.newt +++ b/src/Lib/Compile.newt @@ -414,10 +414,13 @@ we're visiting shallow or deep. We're trying to avoid hitting issues with indire - Shallow represents the declaration, so we filter to those at the end TODO this could be made faster by keeping a map of the done information +REVIEW could I avoid most of this by using `function` instead of arrow functions? + -/ -sortedNames : SortedMap QName CExp → QName → List QName -sortedNames defs qn = map snd $ filter (not ∘ fst) $ go Nil Nil (True, qn) +sortedNames : SortedMap QName CExp → List QName → List QName +sortedNames defs names = + map snd $ filter (not ∘ fst) $ foldl (go Nil) Nil $ map (True,) names where getBody : CAlt → CExp getBody (CConAlt _ _ _ _ t) = t @@ -483,10 +486,10 @@ eraseEntries = do go _ = pure MkUnit -- given a initial function, return a dependency-ordered list of javascript source -process : QName → M (List Doc) -process name = do +process : List QName → M (List Doc) +process names = do top <- getTop - entries <- getEntries emptyMap name + entries <- foldlM getEntries emptyMap names -- Maybe move this dance into liftWhere ref <- newIORef entries @@ -500,18 +503,35 @@ process name = do cexpMap <- tailCallOpt cexpMap -- Not needed for JS, uncomment to test -- cexpMap <- liftLambda cexpMap - let names = sortedNames cexpMap name - pure $ map cexpToDoc $ mapMaybe (\x => lookupMap x cexpMap) names + let names = sortedNames cexpMap names + pure $ mapMaybe (go cexpMap) names + where + go : ExpMap → QName → Maybe Doc + go cexpMap name = do + cexp <- lookupMap name cexpMap + if elem name names + then Just $ text "export" <+> cexpToDoc cexp + else Just $ cexpToDoc cexp compile : M (List Doc) compile = do top <- getTop - case lookupRaw "main" top of - 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 - pure $ reverse (exec :: tmp) - Nothing => - -- TODO maybe emit everything if there is no main - error emptyFC "No main function found" + let exports = getExports Nil $ listValues top.defs + let mainName = (QN top.ns "main") + let main = lookup mainName top + let todo = case main of + Nothing => exports + Just _ => mainName :: exports + defs <- process todo + case lookup mainName top of + Just _ => -- tack on call to main function + let exec = stmtToDoc $ JPlain $ Apply (Var $ show mainName) Nil + in pure $ reverse (exec :: defs) + Nothing => pure $ reverse defs + where + getExports : List QName → List TopEntry → List QName + getExports acc Nil = acc + getExports acc ((MkEntry fc name@(QN ns nm) type def eflags) :: rest) = + let acc = if elem Export eflags then name :: acc else acc + in getExports acc rest + diff --git a/src/Lib/Elab.newt b/src/Lib/Elab.newt index 30c905e..1ece5c8 100644 --- a/src/Lib/Elab.newt +++ b/src/Lib/Elab.newt @@ -493,22 +493,18 @@ unify env mode t u = do unifyRest t' u' = error (getFC t') "unify failed \{show t'} =?= \{show u'} \n env is \{show env}" unifyRef : Val -> Val -> M UnifyResult - unifyRef t'@(VRef fc k sp) u'@(VRef fc' k' sp') = + unifyRef t'@(VRef fc k sp) u'@(VRef fc' k' sp') = do -- unifySpine is a problem for cmp (S x) (S y) =?= cmp x y - do - -- catchError(unifySpine env mode (k == k') sp sp') $ \ err => do - Nothing <- tryEval env t' - | Just v => do - debug $ \ _ => "tryEval \{show t'} to \{show v}" - unify env mode v u' - Nothing <- tryEval env u' - | Just v => unify env mode t' v - if k == k' - then unifySpine env mode (k == k') sp sp' - else error fc "vref mismatch \{show t'} =?= \{show u'}" + Nothing <- tryEval env t' + | Just v => do + debug $ \ _ => "tryEval \{show t'} to \{show v}" + unify env mode v u' + Nothing <- tryEval env u' + | Just v => unify env mode t' v + if k == k' + then unifySpine env mode (k == k') sp sp' + else error fc "vref mismatch \{show t'} =?= \{show u'}" - -- Lennart.newt cursed type references itself - -- We _could_ look up the ref, eval against Nil and vappSpine... unifyRef t u@(VRef fc' k' sp') = do debug $ \ _ => "expand \{show t} =?= %ref \{show k'}" top <- getTop @@ -1488,7 +1484,7 @@ check ctx tm ty = do error fc "Icity issue checking \{show t} at \{show ty}" (t@(RLam _ (BI fc nm icit quant) tm), ty) => do pty <- prvalCtx ty - error fc "Expected pi type, got \{pty}" + error fc "Expected \{pty}, got pi type" (RLet fc nm ty v sc, rty) => do ty' <- check ctx ty (VU emptyFC) diff --git a/src/Lib/Parser.newt b/src/Lib/Parser.newt index f9463c1..a211f1e 100644 --- a/src/Lib/Parser.newt +++ b/src/Lib/Parser.newt @@ -669,11 +669,18 @@ parseInstance = do parseNorm : Parser Decl parseNorm = DCheck <$> getPos <* keyword "#check" <*> typeExpr <* keyword ":" <*> typeExpr +parseExport : Parser Decl +parseExport = do + loc <- getPos + keyword "#export" + names <- many $ withFC ident + pure $ Exports loc names parseDecl : Parser Decl parseDecl = parseMixfix <|> parsePType <|> parsePFunc <|> parseNorm <|> parseData <|> parseShortData <|> parseClass <|> parseInstance <|> parseRecord + <|> parseExport -- We'll put the backtracing stuff last, but there is a commit issue in parseDef <|> parseSig <|> parseDef diff --git a/src/Lib/Parser/Impl.newt b/src/Lib/Parser/Impl.newt index 10a4ab1..a58fbd9 100644 --- a/src/Lib/Parser/Impl.newt +++ b/src/Lib/Parser/Impl.newt @@ -206,7 +206,7 @@ token' : Kind -> Parser String token' k = satisfy (\t => t.val.kind == k) "Expected a \{show k} token" keyword' : String -> Parser Unit -keyword' kw = ignore $ satisfy (\t => t.val.text == kw && (t.val.kind == Keyword || t.val.kind == Symbol || t.val.kind == Number)) "Expected '\{kw}'" +keyword' kw = ignore $ satisfy (\t => t.val.text == kw && (t.val.kind == Keyword || t.val.kind == Symbol || t.val.kind == Number || t.val.kind == Pragma)) "Expected '\{kw}'" -- expect indented token of given kind diff --git a/src/Lib/ProcessDecl.newt b/src/Lib/ProcessDecl.newt index d17e169..98818ad 100644 --- a/src/Lib/ProcessDecl.newt +++ b/src/Lib/ProcessDecl.newt @@ -529,6 +529,16 @@ processRecord ns recordFC (nameFC, nm) tele cname decls = do let deps = ((name, RApp fc (RVar fc pname) (RVar fc "$self") Explicit) :: deps) processFields autoPat tail deps rest +processExports : String → FC → List (FC × String) → M Unit +processExports ns fc names = do + top <- getTop + traverse_ (setExport top) names + where + setExport : TopContext → FC × String → M Unit + setExport top (fc, name) = do + let (Just entry) = lookupRaw name top | _ => error fc "\{name} not in scope" + setFlag entry.name fc Export + -- currently mixfix registration is handled in the parser -- since we now run a decl at a time we could do it here. processDecl ns (PMixFix _ _ _ _) = pure MkUnit @@ -544,3 +554,4 @@ processDecl ns (Data fc nm ty (Just cons)) = processData ns fc nm ty cons -- TODO distinguish from function signatures processDecl ns (Data fc (_, nm) ty Nothing) = processTypeSig ns fc (nm :: Nil) ty processDecl ns (Record recordFC nm tele cname decls) = processRecord ns recordFC nm tele cname decls +processDecl ns (Exports fc names) = processExports ns fc names diff --git a/src/Lib/Syntax.newt b/src/Lib/Syntax.newt index 4abbc94..14d93c4 100644 --- a/src/Lib/Syntax.newt +++ b/src/Lib/Syntax.newt @@ -97,10 +97,12 @@ data Decl | Class FC (FC × Name) Telescope (List Decl) | Instance FC Raw (Maybe (List Decl)) | Record FC (FC × Name) Telescope (Maybe $ FC × Name) (List Decl) + | Exports FC (List $ FC × Name) instance HasFC Decl where getFC (TypeSig x strs tm) = x + getFC (Exports x _) = x getFC (FunDef x str xs) = x getFC (DCheck x tm tm1) = x getFC (Data x str tm xs) = x @@ -148,6 +150,7 @@ instance Show Decl where show (Class _ (_,nm) tele decls) = foo ("Class" :: nm :: "..." :: (show $ map show decls) :: Nil) show (Instance _ nm decls) = foo ("Instance" :: show nm :: (show $ map show decls) :: Nil) show (Record _ nm tele nm1 decls) = foo ("Record" :: show nm :: show tele :: show nm1 :: show decls :: Nil) + show (Exports _ nms) = foo ("Exports" :: show nms :: Nil) instance Show Module where @@ -263,6 +266,7 @@ instance Pretty Decl where <+> (nest 2 $ text "where" stack (map pretty decls)) pretty (Instance _ _ _) = text "TODO pretty Instance" pretty (ShortData _ lhs sigs) = text "data" <+> pretty lhs <+> text "=" <+> pipeSep (map pretty sigs) + pretty (Exports _ nms) = text "#export" <+> spread (map (text ∘ show ∘ snd) nms) lhsNames : Raw → List String lhsNames tm = case tm of diff --git a/src/Lib/Types.newt b/src/Lib/Types.newt index 3e324a4..8016ca0 100644 --- a/src/Lib/Types.newt +++ b/src/Lib/Types.newt @@ -221,18 +221,11 @@ data VCaseAlt : U where VCaseCons : (name : QName) -> (args : List String) -> Env -> Tm -> VCaseAlt VCaseLit : Literal -> Val -> VCaseAlt VCaseDefault : Val -> VCaseAlt - -- VCaseCons : (name : QName) -> (args : List String) -> Tm -> VCaseAlt - -- VCaseLit : Literal -> Tm -> VCaseAlt - -- VCaseDefault : Tm -> VCaseAlt - data Val : U where - -- This will be local / flex with spine. VVar : FC -> (k : Int) -> (sp : SnocList Val) -> Val VRef : FC -> (nm : QName) -> (sp : SnocList Val) -> Val - -- neutral case VCase : FC -> (sc : Val) -> List VCaseAlt -> Val - -- we'll need to look this up in ctx with IO VMeta : FC -> QName -> (sp : SnocList Val) -> Val VLam : FC -> Name -> Icit -> Quant -> Closure -> Val VPi : FC -> Name -> Icit -> Quant -> (a : Val) -> (b : Closure) -> Val @@ -374,15 +367,17 @@ instance Show Def where -- entry in the top level context -data EFlag = Hint | Inline +data EFlag = Hint | Inline | Export instance Show EFlag where show Hint = "hint" show Inline = "inline" + show Export = "export" instance Eq EFlag where Hint == Hint = True Inline == Inline = True + Export == Export = True _ == _ = False record TopEntry where @@ -601,7 +596,7 @@ lookupMeta ix@(QN ns nm) = do Just meta => pure meta Nothing => case lookupMap' ns top.modules of Nothing => - error emptyFC "missing module: \{show ns}" + error emptyFC "missing module: \{show ns} looking up meta \{show ix}" Just mod => case lookupMap' ix mod.modMetaCtx.metas of Nothing => error emptyFC "missing meta: \{show ix}" @@ -641,3 +636,13 @@ instance Show Pattern where data Constraint = PC String Pattern Val instance Show Constraint where show (PC nm pat ty) = show (nm,pat,ty) + +-- Lazy because `let` would do work at the top of a `M a` +prof : ∀ a. String → Lazy (M a) → M a +prof desc work = do + start <- getTime + res <- force work + end <- getTime + putStrLn "PROF \{desc} \{show $ end - start} ms" + pure res + diff --git a/src/Main.newt b/src/Main.newt index 424bd4e..5d5bf2a 100644 --- a/src/Main.newt +++ b/src/Main.newt @@ -46,7 +46,7 @@ writeSource : String -> M Unit writeSource fn = do docs <- compile let src = unlines $ - ( "\"use strict\";" + ( "import fs from 'fs'" :: "const bouncer = (f,ini) => { let obj = ini; while (obj.tag) obj = f(obj); return obj.h0 };" :: Nil) ++ map (render 90 ∘ noAlt) docs diff --git a/src/Node.newt b/src/Node.newt index a7f9485..4c25863 100644 --- a/src/Node.newt +++ b/src/Node.newt @@ -4,7 +4,6 @@ import Prelude pfunc getArgs uses (arrayToList MkIORes) : IO (List String) := `(w) => Prelude_MkIORes( Prelude_arrayToList(null, process.argv.slice(1)), w)` pfunc readFile uses (MkIORes Left Right) : (fn : String) -> IO (Either String String) := `(fn) => (w) => { - let fs = require('fs') let result try { let content = fs.readFileSync(fn, 'utf8') @@ -17,7 +16,6 @@ pfunc readFile uses (MkIORes Left Right) : (fn : String) -> IO (Either String St -- I wonder if I should automatically `uses` the constructors in the types pfunc writeFile uses (MkIORes MkUnit) : String → String → IO (Either String Unit) := `(fn, content) => (w) => { - let fs = require('fs') let result try { fs.writeFileSync(fn, content, 'utf8') @@ -35,20 +33,20 @@ pfunc exitFailure : ∀ a. String → a := `(_, msg) => { }` pfunc putStr uses (MkIORes MkUnit): String → IO Unit := `(s) => (w) => { - let {writeSync} = require('fs'); + let {writeSync} = fs; let buf = new TextEncoder().encode(s); writeSync(1, buf); return Prelude_MkIORes(Prelude_MkUnit, w); }` pfunc readLine uses (MkIORes Left Right) : IO (Either String String) := `(w) => { - let {readSync} = require('fs'); - let buf = Buffer.alloc(1024); + let {readSync} = fs; + let buf = new Uint8Array(1024); let p = 0 while (readSync(0, buf, p, 1, null)) { if (buf[p++] == 10) return Prelude_MkIORes(Prelude_Right(new TextDecoder().decode(buf.slice(0,p))),w); if (p + 10 > buf.length) { - let tmp = Buffer.alloc(buf.length * 1.5); + let tmp = new Uint8Array(buf.length * 1.5); tmp.set(buf); buf = tmp; } diff --git a/src/Prelude.newt b/src/Prelude.newt index b082053..185e378 100644 --- a/src/Prelude.newt +++ b/src/Prelude.newt @@ -389,7 +389,9 @@ instance HasIO IO where liftIO a = a pfunc primPutStrLn uses (MkIORes MkUnit) : String → IO Unit := `(s) => (w) => { - require('fs').writeSync(1, s + '\n') + // https://nodejs.org/api/process.html#a-note-on-process-io + // Previously console.log, but that is _not_ always synchronous + fs.writeSync(1, s + '\n') return Prelude_MkIORes(Prelude_MkUnit,w) }` @@ -956,3 +958,7 @@ foldlM f a xs = foldl (\ ma b => ma >>= flip f b) (pure a) xs pfunc unsafePerformIO : ∀ a. IO a → a := `(a, f) => f().h1 ` +pfunc prim_getTime uses (MkIORes): IO Int := `w => Prelude_MkIORes(+new Date(),w)` + +getTime : ∀ io. {{HasIO io}} → io Int +getTime = liftIO prim_getTime