gitextract_ff6x2v5t/ ├── .gitattributes ├── .github/ │ ├── skills/ │ │ └── hkmc2-difftests/ │ │ ├── SKILL.md │ │ ├── agents/ │ │ │ └── openai.yaml │ │ └── references/ │ │ ├── commands-and-policies.md │ │ └── execution-workflow.md │ └── workflows/ │ └── nix.yml ├── .gitignore ├── .sbtopts ├── .scalafmt.conf ├── .vscode/ │ └── settings.json ├── AGENTS.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── bin/ │ └── mlscript-opt.js ├── build.sbt ├── compiler/ │ └── shared/ │ ├── main/ │ │ └── scala/ │ │ └── mlscript/ │ │ └── compiler/ │ │ ├── ClassLifter.scala │ │ ├── Document.scala │ │ ├── PrettyPrinter.scala │ │ ├── codegen/ │ │ │ ├── CppAst.scala │ │ │ ├── CppCodeGen.scala │ │ │ └── CppCompilerHost.scala │ │ ├── debug/ │ │ │ ├── Debug.scala │ │ │ ├── DebutOutput.scala │ │ │ ├── DummyDebug.scala │ │ │ ├── Printable.scala │ │ │ ├── RainbowDebug.scala │ │ │ └── TreeDebug.scala │ │ ├── ir/ │ │ │ ├── Builder.scala │ │ │ ├── Fresh.scala │ │ │ ├── IR.scala │ │ │ ├── Interp.scala │ │ │ ├── RefResolver.scala │ │ │ └── Validator.scala │ │ ├── optimizer/ │ │ │ ├── Analysis.scala │ │ │ └── TailRecOpt.scala │ │ ├── printer/ │ │ │ └── BlockPrinter.scala │ │ └── simpledef/ │ │ ├── Simpledef.scala │ │ └── Uid.scala │ └── test/ │ ├── diff/ │ │ ├── CompilerScratch.mls │ │ ├── Defunctionalize/ │ │ │ ├── ClassConstructor.mls │ │ │ ├── Classes.mls │ │ │ ├── ClosureCapture.mls │ │ │ ├── Constructor.mls │ │ │ ├── DelayedEvaluation.mls │ │ │ ├── Differentiation.mls │ │ │ ├── FreeVariables.mls │ │ │ ├── FuncsWithParams.mls │ │ │ ├── Inheritance.mls │ │ │ ├── Lambda.mls │ │ │ ├── Lambdas.mls │ │ │ ├── ListConstruction.mls │ │ │ ├── Modules.mls │ │ │ ├── MonoNonLambda.mls │ │ │ ├── MonoTupSelect.mls │ │ │ ├── MutableParams.mls │ │ │ ├── MutualRec.mls │ │ │ ├── NewOperator.mls │ │ │ ├── NuMono.mls │ │ │ ├── ObjFieldAccess.mls │ │ │ ├── ObjFields.mls │ │ │ ├── ObjMultiFields.mls │ │ │ ├── ObjsSelection.mls │ │ │ ├── OldMonoList.mls │ │ │ ├── Polymorphic.mls │ │ │ ├── Record.mls │ │ │ ├── RecursiveFunc.mls │ │ │ ├── SelfReference.mls │ │ │ ├── SimpleClasses.mls │ │ │ ├── SimpleConditionals.mls │ │ │ ├── SimpleFunc.mls │ │ │ ├── Simpledef.mls │ │ │ └── TupleSelect.mls │ │ └── Lifter/ │ │ ├── FunctionTypeAnnotations.mls │ │ ├── LambLift.mls │ │ ├── LiftNew.mls │ │ ├── LiftType.mls │ │ ├── Lifter.mls │ │ ├── LifterBlks.mls │ │ ├── NestedClasses.mls │ │ ├── NestedFuncs.mls │ │ ├── ParameterizedInheritance.mls │ │ └── TypedClassParams.mls │ ├── diff-ir/ │ │ ├── Class.mls │ │ ├── Currying.mls │ │ ├── IR.mls │ │ ├── IRComplex.mls │ │ ├── IRRec.mls │ │ ├── IRTailRec.mls │ │ ├── LiftClass.mls │ │ ├── LiftFun.mls │ │ ├── LiftLambda.mls │ │ ├── NuScratch.mls │ │ ├── Override.mls │ │ ├── cpp/ │ │ │ ├── Makefile │ │ │ └── mlsprelude.h │ │ └── gcd.mls │ └── scala/ │ └── mlscript/ │ └── compiler/ │ ├── Test.scala │ └── TestIR.scala ├── core/ │ └── shared/ │ └── main/ │ └── scala/ │ └── utils/ │ ├── Identity.scala │ ├── Lazy.scala │ ├── algorithms.scala │ ├── package.scala │ └── shorthands.scala ├── doc/ │ ├── Parsing.md │ ├── mls-codebase-doc.md │ └── tuple-patterns.md ├── flake.nix ├── hkmc2/ │ ├── js/ │ │ └── src/ │ │ ├── main/ │ │ │ └── scala/ │ │ │ └── hkmc2/ │ │ │ ├── Compiler.scala │ │ │ ├── io/ │ │ │ │ ├── InMemoryFileSystem.scala │ │ │ │ ├── PlatformFileSystem.scala │ │ │ │ ├── PlatformPath.scala │ │ │ │ ├── VirtualPath.scala │ │ │ │ └── node/ │ │ │ │ ├── NodeFileSystem.scala │ │ │ │ ├── NodePath.scala │ │ │ │ └── package.scala │ │ │ └── utils/ │ │ │ └── PlatformCompilerCache.scala │ │ └── test/ │ │ └── scala/ │ │ └── hkmc2/ │ │ ├── CompilerTest.scala │ │ └── io/ │ │ └── VirtualPathTests.scala │ ├── jvm/ │ │ └── src/ │ │ ├── main/ │ │ │ └── scala/ │ │ │ └── hkmc2/ │ │ │ ├── io/ │ │ │ │ ├── PlatformFileSystem.scala │ │ │ │ └── PlatformPath.scala │ │ │ └── utils/ │ │ │ └── PlatformCompilerCache.scala │ │ └── test/ │ │ └── scala/ │ │ └── hkmc2/ │ │ ├── CompileTestRunner.scala │ │ ├── CompileTestRunnerBase.scala │ │ └── TestFolders.scala │ └── shared/ │ └── src/ │ ├── main/ │ │ └── scala/ │ │ ├── hkmc2/ │ │ │ ├── CompilerCtx.scala │ │ │ ├── Config.scala │ │ │ ├── Diagnostic.scala │ │ │ ├── MLsCompiler.scala │ │ │ ├── Message.scala │ │ │ ├── ShowCtx.scala │ │ │ ├── Uid.scala │ │ │ ├── codegen/ │ │ │ │ ├── Block.scala │ │ │ │ ├── BlockChecker.scala │ │ │ │ ├── BlockSimplifier.scala │ │ │ │ ├── BlockTransformer.scala │ │ │ │ ├── BlockTraverser.scala │ │ │ │ ├── BufferableTransform.scala │ │ │ │ ├── CachedAnalysis.scala │ │ │ │ ├── DeadParamElim.scala │ │ │ │ ├── FirstClassFunctionTransformer.scala │ │ │ │ ├── HandlerLowering.scala │ │ │ │ ├── LambdaRewriter.scala │ │ │ │ ├── Lifter.scala │ │ │ │ ├── Lowering.scala │ │ │ │ ├── Printer.scala │ │ │ │ ├── ReflectionInstrumenter.scala │ │ │ │ ├── ScopeData.scala │ │ │ │ ├── ScopeFlattener.scala │ │ │ │ ├── SpecializedSwitch.scala │ │ │ │ ├── StackSafeTransform.scala │ │ │ │ ├── SymbolRefresher.scala │ │ │ │ ├── TailRecOpt.scala │ │ │ │ ├── UsedVarAnalyzer.scala │ │ │ │ ├── cpp/ │ │ │ │ │ ├── Ast.scala │ │ │ │ │ ├── CodeGen.scala │ │ │ │ │ └── CompilerHost.scala │ │ │ │ ├── deforest/ │ │ │ │ │ ├── Deforest.scala │ │ │ │ │ └── Rewrite.scala │ │ │ │ ├── flowAnalysis/ │ │ │ │ │ ├── FlowAnalysis.scala │ │ │ │ │ └── FlowWebComputation.scala │ │ │ │ ├── js/ │ │ │ │ │ └── JSBuilder.scala │ │ │ │ ├── llir/ │ │ │ │ │ ├── Analysis.scala │ │ │ │ │ ├── Builder.scala │ │ │ │ │ ├── Fresh.scala │ │ │ │ │ ├── Interp.scala │ │ │ │ │ └── Llir.scala │ │ │ │ └── wasm/ │ │ │ │ └── text/ │ │ │ │ ├── Ctx.scala │ │ │ │ ├── Instructions.scala │ │ │ │ ├── Wasm.scala │ │ │ │ └── WatBuilder.scala │ │ │ ├── invalml/ │ │ │ │ ├── ConstraintSolver.scala │ │ │ │ ├── InvalML.scala │ │ │ │ ├── NormalForm.scala │ │ │ │ ├── PrettyPrinter.scala │ │ │ │ ├── TypeSimplifier.scala │ │ │ │ ├── TypeTraverser.scala │ │ │ │ └── types.scala │ │ │ ├── io/ │ │ │ │ ├── FileSystem.scala │ │ │ │ └── Path.scala │ │ │ ├── package.scala │ │ │ ├── semantics/ │ │ │ │ ├── BlockImpl.scala │ │ │ │ ├── Elaborator.scala │ │ │ │ ├── Importer.scala │ │ │ │ ├── Pattern.scala │ │ │ │ ├── Resolver.scala │ │ │ │ ├── SimpleSplit.scala │ │ │ │ ├── Split.scala │ │ │ │ ├── Symbol.scala │ │ │ │ ├── SymbolPrinter.scala │ │ │ │ ├── Term.scala │ │ │ │ ├── flow/ │ │ │ │ │ ├── Constraint.scala │ │ │ │ │ └── FlowAnalysis.scala │ │ │ │ ├── ucs/ │ │ │ │ │ ├── FlatPattern.scala │ │ │ │ │ ├── Normalization.scala │ │ │ │ │ ├── SplitElaborator.scala │ │ │ │ │ ├── TermSynthesizer.scala │ │ │ │ │ └── package.scala │ │ │ │ └── ups/ │ │ │ │ ├── Compiler.scala │ │ │ │ ├── Context.scala │ │ │ │ ├── Instantiator.scala │ │ │ │ ├── Pattern.scala │ │ │ │ └── SplitCompiler.scala │ │ │ ├── syntax/ │ │ │ │ ├── Keyword.scala │ │ │ │ ├── Lexer.scala │ │ │ │ ├── ParseRule.scala │ │ │ │ ├── Parser.scala │ │ │ │ ├── Token.scala │ │ │ │ └── Tree.scala │ │ │ ├── syntax.scala │ │ │ ├── typing/ │ │ │ │ └── Type.scala │ │ │ └── utils/ │ │ │ ├── ReplHost.scala │ │ │ ├── ReportFormatter.scala │ │ │ ├── Scope.scala │ │ │ ├── SymbolSubst.scala │ │ │ ├── document/ │ │ │ │ ├── DocBuilder.scala │ │ │ │ ├── Document.scala │ │ │ │ ├── DocumentContext.scala │ │ │ │ ├── Liftable.scala │ │ │ │ └── package.scala │ │ │ └── utils.scala │ │ └── utils/ │ │ ├── EitherOrBoth.scala │ │ ├── FastParseHelpers.scala │ │ └── TraceLogger.scala │ └── test/ │ ├── js/ │ │ ├── MyClass.mjs │ │ └── Test.mjs │ ├── mlscript/ │ │ ├── ChangedTests.cmd │ │ ├── ElabScratch.mls │ │ ├── HkScratch.mls │ │ ├── OverloadedModulesInSignatures.mls │ │ ├── apps/ │ │ │ ├── AccountingTest.mls │ │ │ ├── CSVTest.mls │ │ │ ├── IterTest.mls │ │ │ ├── parsing/ │ │ │ │ ├── .gitignore │ │ │ │ ├── CamlLightTest.mls │ │ │ │ ├── DirectiveTest.mls │ │ │ │ ├── LeftRecursion.mls │ │ │ │ ├── LexerTest.mls │ │ │ │ ├── LoopExpressions.mls │ │ │ │ ├── ParseRuleVisualizerTest.mls │ │ │ │ ├── ParserErrorTest.mls │ │ │ │ ├── ParserTest.mls │ │ │ │ ├── PrattParsingTest.mls │ │ │ │ ├── RecursiveDescentTest.mls │ │ │ │ ├── RulesTest.mls │ │ │ │ └── TypeTest.mls │ │ │ └── parsing-web-demo/ │ │ │ └── ExamplesTest.mls │ │ ├── backlog/ │ │ │ ├── DestructuringBindings.mls │ │ │ ├── ExplicitLabels.mls │ │ │ ├── ForLLM.mls │ │ │ ├── Lifter.mls │ │ │ ├── NewWith.mls │ │ │ ├── NonReturningStatements.mls │ │ │ ├── OfStatements.mls │ │ │ ├── ToTriage.mls │ │ │ └── UCS.mls │ │ ├── basics/ │ │ │ ├── ADTs.mls │ │ │ ├── AppOp.mls │ │ │ ├── Assert.mls │ │ │ ├── BadClasses.mls │ │ │ ├── BadDefs.mls │ │ │ ├── BadMemberProjections.mls │ │ │ ├── BadModuleUses.mls │ │ │ ├── BadModules.mls │ │ │ ├── BadMut.mls │ │ │ ├── BadOverloading.mls │ │ │ ├── BadParams.mls │ │ │ ├── BadTypeClasses.mls │ │ │ ├── BlockArgs.mls │ │ │ ├── ByNameTailPosition.mls │ │ │ ├── CallSyntaxes.mls │ │ │ ├── Classes.mls │ │ │ ├── CompanionFunctions.mls │ │ │ ├── CompanionModules_Classes.mls │ │ │ ├── CompanionModules_Functions.mls │ │ │ ├── CompanionModules_Patterns.mls │ │ │ ├── CompanionModules_Types.mls │ │ │ ├── CyclicModuleForwarders.mls │ │ │ ├── CyclicValues.mls │ │ │ ├── DataClass.mls │ │ │ ├── Declare.mls │ │ │ ├── DisruptiveComments.mls │ │ │ ├── Drop.mls │ │ │ ├── DynamicFields.mls │ │ │ ├── DynamicInstantiation.mls │ │ │ ├── DynamicSelection.mls │ │ │ ├── ExplicitSelections.mls │ │ │ ├── FunDefs.mls │ │ │ ├── FunnyRecordKeys.mls │ │ │ ├── GenericClasses.mls │ │ │ ├── Getters.mls │ │ │ ├── IdentEscape.mls │ │ │ ├── IfThenNewline.mls │ │ │ ├── Indentation.mls │ │ │ ├── Inheritance.mls │ │ │ ├── LazySpreads.mls │ │ │ ├── LetBindings.mls │ │ │ ├── LiteralSelection.mls │ │ │ ├── Literals.mls │ │ │ ├── LocalVal.mls │ │ │ ├── MemberProjections.mls │ │ │ ├── MiscArrayTests.mls │ │ │ ├── ModuleMethods.mls │ │ │ ├── Modules.mls │ │ │ ├── MultiParamListClasses.mls │ │ │ ├── MultiParamLists.mls │ │ │ ├── MultilineExpressions.mls │ │ │ ├── MutArr.mls │ │ │ ├── MutCls.mls │ │ │ ├── MutRcd.mls │ │ │ ├── MutVal.mls │ │ │ ├── NamedArgs.mls │ │ │ ├── NestedBlocks.mls │ │ │ ├── New.mls │ │ │ ├── NewMut.mls │ │ │ ├── NewlineOperatorEnd.mls │ │ │ ├── NewlineOps.mls │ │ │ ├── NewlineSels.mls │ │ │ ├── ObjectExtensions.mls │ │ │ ├── OfLambdaArgs.mls │ │ │ ├── OpBlocks.mls │ │ │ ├── OpDivPrecedence.mls │ │ │ ├── OpenIn.mls │ │ │ ├── OutParams.mls │ │ │ ├── Overloading.mls │ │ │ ├── PartialApps.mls │ │ │ ├── PrefixOps.mls │ │ │ ├── Puns.mls │ │ │ ├── PureTermStatements.mls │ │ │ ├── Records.mls │ │ │ ├── RefinedClasses.mls │ │ │ ├── Return.mls │ │ │ ├── SetIndented.mls │ │ │ ├── ShortcircuitingOps.mls │ │ │ ├── StrTest.mls │ │ │ ├── SuspensionComments.mls │ │ │ ├── ThenRecord.mls │ │ │ ├── Underscores.mls │ │ │ ├── ValMemberSymbols.mls │ │ │ └── WeirdCalls.mls │ │ ├── block-staging/ │ │ │ ├── Functions.mls │ │ │ ├── Nested.mls │ │ │ ├── PrintCode.mls │ │ │ ├── StageSymbols.mls │ │ │ ├── SymbolRenaming.mls │ │ │ └── Syntax.mls │ │ ├── codegen/ │ │ │ ├── Arrays.mls │ │ │ ├── BadConfigDirective.mls │ │ │ ├── BadFunctions.mls │ │ │ ├── BadImport.mls │ │ │ ├── BadInit.mls │ │ │ ├── BadNew.mls │ │ │ ├── BadOpen.mls │ │ │ ├── BadSpreads.mls │ │ │ ├── BadThis.mls │ │ │ ├── BadValInit.mls │ │ │ ├── BadWhile.mls │ │ │ ├── BasicTerms.mls │ │ │ ├── Bindings.mls │ │ │ ├── BlockPrinter.mls │ │ │ ├── BuiltinOps.mls │ │ │ ├── BuiltinSymbols.mls │ │ │ ├── CaseOfCase.mls │ │ │ ├── CaseShorthand.mls │ │ │ ├── ClassInClass.mls │ │ │ ├── ClassInFun.mls │ │ │ ├── ClassMatching.mls │ │ │ ├── Classes.mls │ │ │ ├── CodegenScratch.mls │ │ │ ├── Comma.mls │ │ │ ├── ConfigDirective.mls │ │ │ ├── ConsoleLog.mls │ │ │ ├── CurriedClasses.mls │ │ │ ├── CurriedFunctions.mls │ │ │ ├── DelayedLetInit.mls │ │ │ ├── Do.mls │ │ │ ├── EarlyReturn.mls │ │ │ ├── ElseLess.mls │ │ │ ├── FieldSymbols.mls │ │ │ ├── FirstClassFunctionTransform.mls │ │ │ ├── Formatting.mls │ │ │ ├── FunInClass.mls │ │ │ ├── Functions.mls │ │ │ ├── FunctionsThis.mls │ │ │ ├── FunnyOpen.mls │ │ │ ├── Getters.mls │ │ │ ├── GlobalThis.mls │ │ │ ├── Hygiene.mls │ │ │ ├── IfThenElse.mls │ │ │ ├── ImperativeConditionals.mls │ │ │ ├── ImportAlias.mls │ │ │ ├── ImportConflicts.mls │ │ │ ├── ImportExample.mls │ │ │ ├── ImportJSClass.mls │ │ │ ├── ImportJSModule.mls │ │ │ ├── ImportMLs.mls │ │ │ ├── ImportMLsJS.mls │ │ │ ├── ImportedOps.mls │ │ │ ├── InlineLambdas.mls │ │ │ ├── InlineMultiArgLists.mls │ │ │ ├── Inliner.mls │ │ │ ├── InnerNameHygiene.mls │ │ │ ├── InterleavedRecords.mls │ │ │ ├── Juxtapositions.mls │ │ │ ├── Lambdas.mls │ │ │ ├── Lazy.mls │ │ │ ├── LetPatterns.mls │ │ │ ├── MergeMatchArms.mls │ │ │ ├── Misc.mls │ │ │ ├── ModuleMatching.mls │ │ │ ├── ModuleMethods.mls │ │ │ ├── Modules.mls │ │ │ ├── NestedClasses.mls │ │ │ ├── NestedScoped.mls │ │ │ ├── NestedTypes.mls │ │ │ ├── NoFreeze.mls │ │ │ ├── NoModuleCheck.mls │ │ │ ├── ObjectInit.mls │ │ │ ├── ObjectMethodDebinding.mls │ │ │ ├── Open.mls │ │ │ ├── OpenJS.mls │ │ │ ├── OpenWildcard.mls │ │ │ ├── OptMatch.mls │ │ │ ├── ParamClasses.mls │ │ │ ├── PartialApps.mls │ │ │ ├── PlainClasses.mls │ │ │ ├── PredefUsage.mls │ │ │ ├── Primes.mls │ │ │ ├── Pwd.mls │ │ │ ├── QQImport.mls │ │ │ ├── Quasiquotes.mls │ │ │ ├── RandomStuff.mls │ │ │ ├── ReboundLet.mls │ │ │ ├── RecordSpreads.mls │ │ │ ├── Repl.mls │ │ │ ├── RuntimeUsage.mls │ │ │ ├── SanityChecks.mls │ │ │ ├── ScopedBlocks.mls │ │ │ ├── ScopedBlocksAndHandlers.mls │ │ │ ├── Scoping.mls │ │ │ ├── SelfReferences.mls │ │ │ ├── SetIn.mls │ │ │ ├── SetStmt.mls │ │ │ ├── ShortCircuitReturn.mls │ │ │ ├── SimplePatMat.mls │ │ │ ├── SingletonInit.mls │ │ │ ├── SpecialJSNames.mls │ │ │ ├── Spreads.mls │ │ │ ├── SwitchSpecialization.mls │ │ │ ├── TailRecFormerFailure.mls │ │ │ ├── This.mls │ │ │ ├── ThisCallVariations.mls │ │ │ ├── ThisCalls.mls │ │ │ ├── Throw.mls │ │ │ ├── TraceLog.mls │ │ │ ├── TraceLogIndent.mls │ │ │ ├── UnitValue.mls │ │ │ ├── While.mls │ │ │ ├── WhileDefaults.mls │ │ │ └── i382.mls │ │ ├── ctx/ │ │ │ ├── CascadingTypeClasses.mls │ │ │ ├── ClassCtxParams.mls │ │ │ ├── EtaExpansion.mls │ │ │ ├── ExplicitlySpec.mls │ │ │ ├── ForwardTypeClassUses.mls │ │ │ ├── MissingDefinitions1.mls │ │ │ ├── MissingDefinitions2.mls │ │ │ ├── Summon.mls │ │ │ ├── SymbolResolution.mls │ │ │ ├── TrickyResolution.mls │ │ │ ├── TypeClasses.mls │ │ │ └── TypeResolution.mls │ │ ├── dead-param-elim/ │ │ │ ├── basic.mls │ │ │ ├── clash.mls │ │ │ ├── class-in-fun.mls │ │ │ ├── config-flags.mls │ │ │ ├── dead-ref.mls │ │ │ ├── lambda.mls │ │ │ ├── module.mls │ │ │ ├── multiArgLists.mls │ │ │ ├── recursive.mls │ │ │ ├── refresher.mls │ │ │ ├── todos.mls │ │ │ └── ups.mls │ │ ├── decls/ │ │ │ └── Prelude.mls │ │ ├── deforest/ │ │ │ ├── append.mls │ │ │ ├── basic.mls │ │ │ ├── clashes.mls │ │ │ ├── cyclic.mls │ │ │ ├── determinism.mls │ │ │ ├── dropLast.mls │ │ │ ├── floatoutSafety.mls │ │ │ ├── imperative.mls │ │ │ ├── listComprehension.mls │ │ │ ├── module.mls │ │ │ ├── multiArgLists.mls │ │ │ ├── nestedMatch.mls │ │ │ ├── recursive.mls │ │ │ ├── relaxedPrograms.mls │ │ │ ├── selectionsInNestedMatch.mls │ │ │ ├── simple.mls │ │ │ ├── todos.mls │ │ │ └── zipunzip.mls │ │ ├── flows/ │ │ │ ├── BadFlows.mls │ │ │ ├── BasicFlows.mls │ │ │ ├── Identity.mls │ │ │ ├── LeadingDotAccesses.mls │ │ │ ├── SelExpansion.mls │ │ │ ├── SelExpansionImport.mls │ │ │ └── TypeFlows.mls │ │ ├── handlers/ │ │ │ ├── BadHandlers.mls │ │ │ ├── Debugging.mls │ │ │ ├── EffectInHandler.mls │ │ │ ├── Effects.mls │ │ │ ├── EffectsHygiene.mls │ │ │ ├── EffectsInClasses.mls │ │ │ ├── EffectsInMethods.mls │ │ │ ├── Fallthrough.mls │ │ │ ├── GeneratorStack.mls │ │ │ ├── Generators.mls │ │ │ ├── HandlerBlockBindings.mls │ │ │ ├── HandlerReset.mls │ │ │ ├── HandlersInClasses.mls │ │ │ ├── HandlersInMethods.mls │ │ │ ├── HandlersScratch.mls │ │ │ ├── LeakingEffects.mls │ │ │ ├── ManualEffectBinding.mls │ │ │ ├── ManualStackSafety.mls │ │ │ ├── MultiResumption.mls │ │ │ ├── NestedFun.mls │ │ │ ├── NestedHandlers.mls │ │ │ ├── NoHandler.mls │ │ │ ├── NoStackSafety.mls │ │ │ ├── NonLocalReturns.mls │ │ │ ├── RecursiveHandlers.mls │ │ │ ├── ReturnInHandler.mls │ │ │ ├── SavedVars.mls │ │ │ ├── SetInHandlers.mls │ │ │ ├── StackSafety.mls │ │ │ ├── TailCallOptimization.mls │ │ │ ├── UserThreads.mls │ │ │ ├── UserThreadsSafe.mls │ │ │ ├── UserThreadsUnsafe.mls │ │ │ └── ZCombinator.mls │ │ ├── interop/ │ │ │ ├── Arrays.mls │ │ │ ├── CtorBypass.mls │ │ │ ├── Functions.mls │ │ │ ├── JSCollections.mls │ │ │ ├── JSDerp.mls │ │ │ ├── Null.mls │ │ │ ├── Number.mls │ │ │ ├── Objects.mls │ │ │ ├── Symbols.mls │ │ │ └── Virtualization.mls │ │ ├── invalml/ │ │ │ ├── InvalMLAuthorResponse.mls │ │ │ ├── InvalMLBasicADTs.mls │ │ │ ├── InvalMLBasics.mls │ │ │ ├── InvalMLBorrowing.mls │ │ │ ├── InvalMLBorrowing2.mls │ │ │ ├── InvalMLBounds.mls │ │ │ ├── InvalMLCheck.mls │ │ │ ├── InvalMLCodeGen.mls │ │ │ ├── InvalMLCyclicExtrude.mls │ │ │ ├── InvalMLDP.mls │ │ │ ├── InvalMLDisjoint.mls │ │ │ ├── InvalMLEffectAnnots.mls │ │ │ ├── InvalMLErrors.mls │ │ │ ├── InvalMLExtrude.mls │ │ │ ├── InvalMLFunGenFix.mls │ │ │ ├── InvalMLFuns.mls │ │ │ ├── InvalMLGPCE.mls │ │ │ ├── InvalMLGetters.mls │ │ │ ├── InvalMLId.mls │ │ │ ├── InvalMLLetRegEncoding.mls │ │ │ ├── InvalMLList.mls │ │ │ ├── InvalMLOption.mls │ │ │ ├── InvalMLPoly.mls │ │ │ ├── InvalMLPrelude.mls │ │ │ ├── InvalMLQQ.mls │ │ │ ├── InvalMLRec.mls │ │ │ ├── InvalMLRef.mls │ │ │ ├── InvalMLScratch.mls │ │ │ ├── InvalMLSelfApp.mls │ │ │ ├── InvalMLSeq.mls │ │ │ ├── InvalMLSyntax.mls │ │ │ ├── InvalMLTODOs.mls │ │ │ ├── InvalMLUntyped.mls │ │ │ ├── InvalMLUsefulExtrusion.mls │ │ │ ├── InvalMLVariance.mls │ │ │ └── web-demos/ │ │ │ ├── DynamicProgramming.mls │ │ │ ├── ExamplesInResponse.mls │ │ │ ├── ExamplesInThePaper.mls │ │ │ ├── Exception.mls │ │ │ ├── README.md │ │ │ ├── SimpleConstraintSolver.mls │ │ │ ├── StackMM.mls │ │ │ ├── Staging.mls │ │ │ ├── flix/ │ │ │ │ ├── GUI.mls │ │ │ │ └── Interpreter.mls │ │ │ └── reml/ │ │ │ └── MergeSort.mls │ │ ├── lifter/ │ │ │ ├── ClassInFun.mls │ │ │ ├── ClassWithCompanion.mls │ │ │ ├── CompanionsInFun.mls │ │ │ ├── CurriedClassInFun.mls │ │ │ ├── DefnsInClass.mls │ │ │ ├── EffectHandlers.mls │ │ │ ├── FunInFun.mls │ │ │ ├── FunInMethod.mls │ │ │ ├── Imports.mls │ │ │ ├── Loops.mls │ │ │ ├── ModulesObjects.mls │ │ │ ├── Mutation.mls │ │ │ ├── PatternInFun.mls │ │ │ └── StackSafetyLift.mls │ │ ├── llir/ │ │ │ ├── BadPrograms.mls │ │ │ ├── BasicCpp.mls │ │ │ ├── BasisLLIR.mls │ │ │ ├── Classes.mls │ │ │ ├── ControlFlow.mls │ │ │ ├── Ctor.mls │ │ │ ├── HigherOrder.mls │ │ │ ├── Lazy.mls │ │ │ ├── LazyCycle.mls │ │ │ ├── LlirScratch.mls │ │ │ ├── Method.mls │ │ │ ├── Split.mls │ │ │ ├── Tuple.mls │ │ │ └── nofib/ │ │ │ ├── NofibPrelude.mls │ │ │ ├── atom.mls │ │ │ ├── awards.mls │ │ │ ├── constraints.mls │ │ │ ├── scc.mls │ │ │ └── secretary.mls │ │ ├── meta/ │ │ │ ├── BlockDiffTesting.mls │ │ │ ├── CompilerFiction.mls │ │ │ ├── ImportedTest.mls │ │ │ ├── ImporterTest.mls │ │ │ └── LocDebugging.mls │ │ ├── nofib/ │ │ │ ├── ansi.mls │ │ │ ├── atom.mls │ │ │ ├── awards.mls │ │ │ ├── banner.mls │ │ │ ├── boyer.mls │ │ │ ├── boyer2.mls │ │ │ ├── calendar.mls │ │ │ ├── cichelli.mls │ │ │ ├── circsim.mls │ │ │ ├── clausify.mls │ │ │ ├── constraints.mls │ │ │ ├── cryptarithm1.mls │ │ │ ├── cryptarithm2.mls │ │ │ ├── cse.mls │ │ │ ├── eliza.mls │ │ │ ├── fish.mls │ │ │ ├── gcd.mls │ │ │ ├── input/ │ │ │ │ ├── 1500.1 │ │ │ │ ├── 1500.2 │ │ │ │ ├── Main.hs │ │ │ │ ├── heathcote3.prob │ │ │ │ └── rsa.faststdin │ │ │ ├── integer.mls │ │ │ ├── knights.mls │ │ │ ├── lambda.mls │ │ │ ├── last-piece.mls │ │ │ ├── lcss.mls │ │ │ ├── life.mls │ │ │ ├── mandel.mls │ │ │ ├── mandel2.mls │ │ │ ├── mate.mls │ │ │ ├── minimax.mls │ │ │ ├── para.mls │ │ │ ├── power.mls │ │ │ ├── pretty.mls │ │ │ ├── primetest.mls │ │ │ ├── puzzle.mls │ │ │ ├── rsa.mls │ │ │ ├── scc.mls │ │ │ ├── secretary.mls │ │ │ ├── sorting.mls │ │ │ ├── sphere.mls │ │ │ └── treejoin.mls │ │ ├── objbuf/ │ │ │ ├── Basics.mls │ │ │ ├── Mutation.mls │ │ │ └── ObjectBufferAllocator.mls │ │ ├── opt/ │ │ │ ├── AbortivePrefix.mls │ │ │ ├── DeadObjRemoval.mls │ │ │ ├── DeadSelRemoval.mls │ │ │ ├── DeadStatRemoval.mls │ │ │ └── DeadVarRemoval.mls │ │ ├── parser/ │ │ │ ├── Apply.mls │ │ │ ├── Atoms.mls │ │ │ ├── Block.mls │ │ │ ├── BoolOps.mls │ │ │ ├── Class.mls │ │ │ ├── ConstrainedTypes.mls │ │ │ ├── Extends.mls │ │ │ ├── Handler.mls │ │ │ ├── Indent.mls │ │ │ ├── Let.mls │ │ │ ├── LetLet.mls │ │ │ ├── Modifiers.mls │ │ │ ├── MultiLineCall.mls │ │ │ ├── Mut.mls │ │ │ ├── Of.mls │ │ │ ├── Operators.mls │ │ │ ├── PrefixOps.mls │ │ │ ├── Semis.mls │ │ │ ├── SetCurlyBraces.mls │ │ │ ├── Suspension.mls │ │ │ ├── Then.mls │ │ │ └── Val.mls │ │ ├── std/ │ │ │ ├── FingerTreeListTest.mls │ │ │ ├── IterTest.mls │ │ │ ├── LazyArrayTest.mls │ │ │ ├── LazyFingerTreeTest.mls │ │ │ ├── PredefTest.mls │ │ │ ├── PrettyPrintTest.mls │ │ │ ├── RecordTest.mls │ │ │ ├── RenderingTest.mls │ │ │ └── StackTests.mls │ │ ├── syntax/ │ │ │ ├── AbusiveSuspensions.mls │ │ │ ├── BackslashApps.mls │ │ │ ├── BasicIfs.mls │ │ │ ├── KeywordStutters.mls │ │ │ ├── TypesInTerms.mls │ │ │ ├── WeirdBrackets.mls │ │ │ └── annotations/ │ │ │ ├── AnnotationPrecedence.mls │ │ │ ├── Declarations.mls │ │ │ ├── Pattern.mls │ │ │ └── Unsupported.mls │ │ ├── tailrec/ │ │ │ ├── Annots.mls │ │ │ ├── Errors.mls │ │ │ ├── MultiArgLists.mls │ │ │ ├── Simple.mls │ │ │ └── TailRecOpt.mls │ │ ├── ucs/ │ │ │ ├── AndNewline.mls │ │ │ ├── examples/ │ │ │ │ ├── BinarySearchTree.mls │ │ │ │ ├── EitherOrBoth.mls │ │ │ │ ├── LeftistTree.mls │ │ │ │ ├── ListFold.mls │ │ │ │ ├── Permutations.mls │ │ │ │ ├── SimpleTree.mls │ │ │ │ └── ULC.mls │ │ │ ├── future/ │ │ │ │ ├── AppSplits.mls │ │ │ │ ├── Or.mls │ │ │ │ └── SymbolicClass.mls │ │ │ ├── general/ │ │ │ │ ├── BooleanPatterns.mls │ │ │ │ ├── CardSuits.mls │ │ │ │ ├── CrossModules.mls │ │ │ │ ├── DualOptions.mls │ │ │ │ ├── InterleavedLet.mls │ │ │ │ ├── JoinPoints.mls │ │ │ │ ├── List.mls │ │ │ │ ├── LogicalConnectives.mls │ │ │ │ ├── Seqs.mls │ │ │ │ └── Simple.mls │ │ │ ├── hygiene/ │ │ │ │ ├── CrossBranchCapture.mls │ │ │ │ ├── Hygiene.mls │ │ │ │ ├── HygienicBindings.mls │ │ │ │ └── PatVars.mls │ │ │ ├── normalization/ │ │ │ │ ├── Deduplication.mls │ │ │ │ ├── DeduplicationWhile.mls │ │ │ │ ├── ExcessiveDeduplication.mls │ │ │ │ ├── InheritanceNormalization.mls │ │ │ │ ├── OverlapOfPrimitives.mls │ │ │ │ ├── SimplePairMatches.mls │ │ │ │ ├── UnifySubScrutinees.mls │ │ │ │ └── UnifyTupleElements.mls │ │ │ ├── papers/ │ │ │ │ └── OperatorSplit.mls │ │ │ ├── patterns/ │ │ │ │ ├── AliasPattern.mls │ │ │ │ ├── Compilation.mls │ │ │ │ ├── ConjunctionPattern.mls │ │ │ │ ├── GuardedPatternBindings.mls │ │ │ │ ├── Literals.mls │ │ │ │ ├── NamePattern.mls │ │ │ │ ├── Parameters.mls │ │ │ │ ├── RecordPattern.mls │ │ │ │ ├── Refinement.mls │ │ │ │ ├── RestTuple.mls │ │ │ │ ├── SimpleTuple.mls │ │ │ │ ├── SpreadTrailingIndex.mls │ │ │ │ ├── String.mls │ │ │ │ └── where.mls │ │ │ ├── staging/ │ │ │ │ ├── Unapply.mls │ │ │ │ ├── coverage/ │ │ │ │ │ ├── ConflictedCoveredCases.mls │ │ │ │ │ ├── ConflictedPatterns.mls │ │ │ │ │ ├── CoveredCases.mls │ │ │ │ │ ├── DuplicatedCases.mls │ │ │ │ │ ├── MissingCases.mls │ │ │ │ │ ├── Refinement.mls │ │ │ │ │ ├── SealedClasses.mls │ │ │ │ │ ├── Tautology.mls │ │ │ │ │ └── Unreachable.mls │ │ │ │ ├── edges/ │ │ │ │ │ └── Unconditional.mls │ │ │ │ ├── examples/ │ │ │ │ │ ├── AVLTree.mls │ │ │ │ │ ├── Calculator.mls │ │ │ │ │ ├── JSON.mls │ │ │ │ │ ├── LispInterpreter.mls │ │ │ │ │ ├── List.mls │ │ │ │ │ ├── Option.mls │ │ │ │ │ ├── STLC.mls │ │ │ │ │ ├── SimpleLisp.mls │ │ │ │ │ ├── SimpleList.mls │ │ │ │ │ └── SimpleTree.mls │ │ │ │ ├── legacy/ │ │ │ │ │ ├── DirectLines.mls │ │ │ │ │ ├── ElseIf.mls │ │ │ │ │ ├── ErrorMessage.mls │ │ │ │ │ ├── Exhaustiveness.mls │ │ │ │ │ ├── Humiliation.mls │ │ │ │ │ ├── InterleavedLet.mls │ │ │ │ │ ├── LeadingAnd.mls │ │ │ │ │ ├── LitUCS.mls │ │ │ │ │ ├── MultiwayIf.mls │ │ │ │ │ ├── NestedBranches.mls │ │ │ │ │ ├── NestedPattern.mls │ │ │ │ │ ├── NuPlainConditionals.mls │ │ │ │ │ ├── OverlappedBranches.mls │ │ │ │ │ ├── ParseFailures.mls │ │ │ │ │ ├── ParserFailures.mls │ │ │ │ │ ├── SplitAfterOp.mls │ │ │ │ │ ├── SplitAnd.mls │ │ │ │ │ ├── SplitAroundOp.mls │ │ │ │ │ ├── SplitBeforeOp.mls │ │ │ │ │ ├── SplitOps.mls │ │ │ │ │ ├── SplitScrutinee.mls │ │ │ │ │ ├── ThenIndent.mls │ │ │ │ │ ├── TrivialIf.mls │ │ │ │ │ ├── WeirdIf.mls │ │ │ │ │ ├── WeirdSplit.mls │ │ │ │ │ ├── Wildcard.mls │ │ │ │ │ └── zipWith.mls │ │ │ │ └── stages/ │ │ │ │ ├── PostProcessing.mls │ │ │ │ ├── SpecilizationCollision.mls │ │ │ │ └── Transformation.mls │ │ │ └── syntax/ │ │ │ ├── And.mls │ │ │ ├── BadUCSSyntax.mls │ │ │ ├── ConjunctMatches.mls │ │ │ ├── Do.mls │ │ │ ├── DoProblems.mls │ │ │ ├── Else.mls │ │ │ ├── Empty.mls │ │ │ ├── IfOpSplit.mls │ │ │ ├── Is.mls │ │ │ ├── NestedOpSplits.mls │ │ │ ├── Of.mls │ │ │ ├── PlainConditionals.mls │ │ │ ├── SimpleUCS.mls │ │ │ ├── Split.mls │ │ │ ├── TupleRest.mls │ │ │ └── WithBraces.mls │ │ ├── ups/ │ │ │ ├── BadPatterns.mls │ │ │ ├── BasicStackPatterns.mls │ │ │ ├── Future.mls │ │ │ ├── JoinPatterns.mls │ │ │ ├── LocalPatterns.mls │ │ │ ├── MatchResult.mls │ │ │ ├── RangePatterns.mls │ │ │ ├── RecursiveTransformations.mls │ │ │ ├── SimpleConjunction.mls │ │ │ ├── SimpleTransform.mls │ │ │ ├── TransformFree.mls │ │ │ ├── UpsBugsBacklog.mls │ │ │ ├── examples/ │ │ │ │ ├── BadRecStackParse.mls │ │ │ │ ├── BasicSeqStackParse.mls │ │ │ │ ├── BasicStackParse.mls │ │ │ │ ├── Computation.mls │ │ │ │ ├── DnfCnf.mls │ │ │ │ ├── DoubleOrSum.mls │ │ │ │ ├── DoubleTripleList.mls │ │ │ │ ├── EvaluationContext.mls │ │ │ │ ├── EvaluationContext2.mls │ │ │ │ ├── Extraction.mls │ │ │ │ ├── Flatten.mls │ │ │ │ ├── HindleyMilner.mls │ │ │ │ ├── ListPredicates.mls │ │ │ │ ├── Negation.mls │ │ │ │ ├── PrecedenceClimbStackParse.mls │ │ │ │ ├── Record.mls │ │ │ │ └── TupleSpread.mls │ │ │ ├── nondeterminism/ │ │ │ │ ├── BitArithmetic.mls │ │ │ │ ├── EvenOddTree.mls │ │ │ │ └── LaRbTree.mls │ │ │ ├── parametric/ │ │ │ │ ├── EtaConversion.mls │ │ │ │ ├── HigherOrderPattern.mls │ │ │ │ ├── ListLike.mls │ │ │ │ └── Nullable.mls │ │ │ ├── recursion/ │ │ │ │ ├── BitSeq.mls │ │ │ │ ├── BitTree.mls │ │ │ │ ├── LeafEvenOddTree.mls │ │ │ │ ├── NatBox.mls │ │ │ │ ├── NullTree.mls │ │ │ │ └── SignBox.mls │ │ │ ├── regex/ │ │ │ │ ├── EmailAddress.mls │ │ │ │ ├── EmptyString.mls │ │ │ │ ├── Identifier.mls │ │ │ │ ├── Number.mls │ │ │ │ ├── Separation.mls │ │ │ │ ├── Simplification.mls │ │ │ │ └── TailRepetition.mls │ │ │ ├── specialization/ │ │ │ │ ├── SimpleList.mls │ │ │ │ └── SimpleLiterals.mls │ │ │ ├── syntax/ │ │ │ │ ├── CrossCompilation.mls │ │ │ │ ├── Declaration.mls │ │ │ │ ├── InterestingPatterns.mls │ │ │ │ ├── MixedParameters.mls │ │ │ │ ├── PatternBody.mls │ │ │ │ ├── Precedence.mls │ │ │ │ ├── WrongArguments.mls │ │ │ │ └── WrongArity.mls │ │ │ └── transformation/ │ │ │ └── BindingLess.mls │ │ └── wasm/ │ │ ├── Basics.mls │ │ ├── Binaryen.mls │ │ ├── BuiltinOperators.mls │ │ ├── ClassInheritance.mls │ │ ├── ClassMethods.mls │ │ ├── ControlFlow.mls │ │ ├── Exceptions.mls │ │ ├── MainFunctions.mls │ │ ├── Matching.mls │ │ ├── ReplImports.mls │ │ ├── ScopedLocals.mls │ │ ├── SingletonUnit.mls │ │ ├── Singletons.mls │ │ ├── Strings.mls │ │ └── Tuples.mls │ └── mlscript-compile/ │ ├── .gitignore │ ├── Block.mls │ ├── CSP.mls │ ├── CachedHash.mls │ ├── Char.mls │ ├── Example.mls │ ├── FingerTreeList.mls │ ├── Iter.mls │ ├── LazyArray.mls │ ├── LazyFingerTree.mls │ ├── MutMap.mls │ ├── NoFreeze.mls │ ├── ObjectBuffer.mls │ ├── Option.mls │ ├── Predef.mls │ ├── QuoteExample.mls │ ├── QuoteExample1.mls │ ├── QuoteExample2.mls │ ├── Record.mls │ ├── Rendering.mls │ ├── Runtime.mls │ ├── Shape.mls │ ├── Stack.mls │ ├── StrOps.mls │ ├── Term.mls │ ├── TreeTracer.mls │ ├── XML.mls │ ├── apps/ │ │ ├── Accounting.mls │ │ ├── CSV.mls │ │ ├── parsing/ │ │ │ ├── BasicExpr.mls │ │ │ ├── Expr.mls │ │ │ ├── Extension.mls │ │ │ ├── Keywords.mls │ │ │ ├── Lexer.mls │ │ │ ├── ParseRule.mls │ │ │ ├── ParseRuleVisualizer.mls │ │ │ ├── Parser.mls │ │ │ ├── PrattParsing.mls │ │ │ ├── RecursiveDescent.mls │ │ │ ├── Rules.mls │ │ │ ├── Test.mls │ │ │ ├── Token.mls │ │ │ ├── TokenHelpers.mls │ │ │ ├── Tree.mls │ │ │ ├── TreeHelpers.mls │ │ │ └── vendors/ │ │ │ └── railroad/ │ │ │ └── railroad.css │ │ └── parsing-web-demo/ │ │ ├── Examples.mls │ │ ├── index.html │ │ └── main.mls │ ├── cpp/ │ │ ├── Makefile │ │ ├── mlsaux.cxx │ │ └── mlsprelude.h │ ├── nofib/ │ │ ├── NofibPrelude.mls │ │ ├── ansi.mls │ │ ├── atom.mls │ │ ├── awards.mls │ │ ├── banner.mls │ │ ├── boyer.mls │ │ ├── boyer2.mls │ │ ├── calendar.mls │ │ ├── cichelli.mls │ │ ├── circsim.mls │ │ ├── clausify.mls │ │ ├── constraints.mls │ │ ├── cryptarithm1.mls │ │ ├── cryptarithm2.mls │ │ ├── cse.mls │ │ ├── eliza.mls │ │ ├── fish.mls │ │ ├── gcd.mls │ │ ├── integer.mls │ │ ├── knights.mls │ │ ├── lambda.mls │ │ ├── lastpiece.mls │ │ ├── lcss.mls │ │ ├── life.mls │ │ ├── mandel.mls │ │ ├── mandel2.mls │ │ ├── mate.mls │ │ ├── minimax.mls │ │ ├── para.mls │ │ ├── power.mls │ │ ├── pretty.mls │ │ ├── primetest.mls │ │ ├── puzzle.mls │ │ ├── rsa.mls │ │ ├── scc.mls │ │ ├── secretary.mls │ │ ├── sorting.mls │ │ ├── sphere.mls │ │ └── treejoin.mls │ ├── quotes/ │ │ ├── CSPBar.mls │ │ ├── CSPBaz.mls │ │ ├── CSPFoo.mls │ │ ├── CSPNest.mls │ │ ├── Cubic.mls │ │ ├── Gib12.mls │ │ ├── Opened.mls │ │ ├── QuoteFoo.mls │ │ ├── QuoteInc.mls │ │ └── SafeDiv.mls │ ├── ups/ │ │ ├── DnfCnf.mls │ │ ├── EvaluationContext.mls │ │ ├── EvenOddTree.mls │ │ ├── README.md │ │ └── TruthyFalsy.mls │ └── wasm/ │ └── Wasm.mls ├── hkmc2AppsTests/ │ └── src/ │ └── test/ │ └── scala/ │ └── hkmc2/ │ ├── AppsCompileTestRunner.scala │ └── AppsDiffTestRunner.scala ├── hkmc2Benchmarks/ │ └── src/ │ └── test/ │ ├── bench/ │ │ ├── .gitignore │ │ ├── FingerTreesAsStacks.mls │ │ ├── LazySpreads.mls │ │ ├── mlscript-compile/ │ │ │ └── Benchmark.mls │ │ ├── nofibs-bench1.mls │ │ ├── nofibs-bench2.mls │ │ ├── nofibs-bench3.mls │ │ └── viz.html │ ├── logs/ │ │ └── .gitignore │ └── scala/ │ └── hkmc2/ │ ├── BenchDiffMaker.scala │ ├── BenchTestRunner.scala │ └── Watcher.scala ├── hkmc2DiffTests/ │ └── src/ │ └── test/ │ ├── out/ │ │ └── Basic Document Tests.out │ └── scala/ │ └── hkmc2/ │ ├── DiffMaker.scala │ ├── DiffTestRunner.scala │ ├── DocumentTests.scala │ ├── InvalmlDiffMaker.scala │ ├── JSBackendDiffMaker.scala │ ├── LlirDiffMaker.scala │ ├── MLsDiffMaker.scala │ ├── MainDiffMaker.scala │ ├── WasmDiffMaker.scala │ └── Watcher.scala ├── hkmc2NofibTests/ │ └── src/ │ └── test/ │ └── scala/ │ └── hkmc2/ │ ├── NofibCompileTestRunner.scala │ └── NofibDiffTestRunner.scala ├── hkmc2WasmTests/ │ └── src/ │ └── test/ │ └── scala/ │ └── hkmc2/ │ ├── WasmCompileTestRunner.scala │ └── WasmDiffTestRunner.scala ├── index.css ├── index.html ├── local_testing.html ├── out/ │ ├── apps/ │ │ ├── .gitkeep │ │ └── AccountingTest.md │ └── test.md ├── package.json ├── project/ │ ├── build.properties │ └── plugins.sbt ├── shared/ │ └── src/ │ ├── main/ │ │ └── scala/ │ │ └── mlscript/ │ │ ├── ConstraintSolver.scala │ │ ├── Diagnostic.scala │ │ ├── JSBackend.scala │ │ ├── Lexer.scala │ │ ├── MLParser.scala │ │ ├── Message.scala │ │ ├── NewLexer.scala │ │ ├── NewParser.scala │ │ ├── NormalForms.scala │ │ ├── NuTypeDefs.scala │ │ ├── Parser.scala │ │ ├── Token.scala │ │ ├── TypeDefs.scala │ │ ├── TypeSimplifier.scala │ │ ├── Typer.scala │ │ ├── TyperDatatypes.scala │ │ ├── TyperHelpers.scala │ │ ├── codegen/ │ │ │ ├── Codegen.scala │ │ │ ├── Error.scala │ │ │ ├── Polyfill.scala │ │ │ ├── QQHelper.scala │ │ │ ├── Scope.scala │ │ │ ├── Symbol.scala │ │ │ └── typescript/ │ │ │ └── TsTypegen.scala │ │ ├── helpers.scala │ │ ├── package.scala │ │ ├── pretyper/ │ │ │ ├── Diagnosable.scala │ │ │ ├── PreTyper.scala │ │ │ ├── Scope.scala │ │ │ ├── Symbol.scala │ │ │ └── Traceable.scala │ │ ├── syntax.scala │ │ ├── ucs/ │ │ │ ├── Desugarer.scala │ │ │ ├── context/ │ │ │ │ ├── Context.scala │ │ │ │ ├── Matchable.scala │ │ │ │ ├── Pattern.scala │ │ │ │ └── Scrutinee.scala │ │ │ ├── display.scala │ │ │ ├── package.scala │ │ │ ├── stages/ │ │ │ │ ├── CoverageChecking.scala │ │ │ │ ├── Desugaring.scala │ │ │ │ ├── Normalization.scala │ │ │ │ ├── PartialTerm.scala │ │ │ │ ├── PostProcessing.scala │ │ │ │ ├── Transformation.scala │ │ │ │ └── package.scala │ │ │ └── syntax/ │ │ │ ├── core.scala │ │ │ └── source.scala │ │ └── utils/ │ │ └── FastParseHelpers.scala │ └── test/ │ ├── diff/ │ │ ├── analysis/ │ │ │ ├── Variance.mls │ │ │ └── Weird.mls │ │ ├── basics/ │ │ │ ├── AsBindings.fun │ │ │ ├── Blocks.fun │ │ │ ├── Data.fun │ │ │ ├── Datatypes.fun │ │ │ ├── Either.fun │ │ │ ├── Errors.fun │ │ │ ├── ExplicitDatatypes.fun │ │ │ ├── Flow.fun │ │ │ ├── Intersections.fun │ │ │ ├── Iso.fun │ │ │ ├── Lambdas.fun │ │ │ ├── Literals.fun │ │ │ ├── Negations.fun │ │ │ ├── Operators.fun │ │ │ ├── RecFuns.fun │ │ │ ├── Records.fun │ │ │ ├── Simplesub1.fun │ │ │ ├── Simplesub2.fun │ │ │ ├── Slashes.fun │ │ │ ├── Tuples.fun │ │ │ ├── Twice.fun │ │ │ ├── Unions.fun │ │ │ └── VerboseErrors.fun │ │ ├── codegen/ │ │ │ ├── AuxiliaryConstructors.mls │ │ │ ├── Classes.mls │ │ │ ├── ConstructorStmt.mls │ │ │ ├── Declare.mls │ │ │ ├── Escape.mls │ │ │ ├── FieldOverride.mls │ │ │ ├── IndirectRecursion.mls │ │ │ ├── Inheritance.mls │ │ │ ├── LogInfo.mls │ │ │ ├── MemberInitShadowing.mls │ │ │ ├── Mixin.mls │ │ │ ├── MixinCapture.mls │ │ │ ├── Modules.mls │ │ │ ├── MutFields.mls │ │ │ ├── NamedArgsCurry.mls │ │ │ ├── Nested.mls │ │ │ ├── New.mls │ │ │ ├── NewClasses.mls │ │ │ ├── NewMatching.mls │ │ │ ├── NewMutualRef.mls │ │ │ ├── NuClasses.mls │ │ │ ├── NuFuns.mls │ │ │ ├── NuParentheses.mls │ │ │ ├── NuReplHost.mls │ │ │ ├── ParameterPattern.mls │ │ │ ├── Parentheses.mls │ │ │ ├── PatternMatch.mls │ │ │ ├── Polyfill.mls │ │ │ ├── Recursion.mls │ │ │ ├── ReplHost.mls │ │ │ ├── Res.mls │ │ │ ├── Shadowing.mls │ │ │ ├── SortClass.mls │ │ │ ├── Super.mls │ │ │ ├── SymbolicOps.mls │ │ │ ├── Terms.mls │ │ │ ├── TraitMethods.mls │ │ │ ├── TrickyShadowing.mls │ │ │ ├── TrickyTerms.mls │ │ │ ├── TrickyWiths.mls │ │ │ ├── Unicode.mls │ │ │ ├── ValLet.mls │ │ │ └── While.mls │ │ ├── contys/ │ │ │ ├── AbstractBounds.mls │ │ │ └── ExplicitConstraints.mls │ │ ├── ecoop23/ │ │ │ ├── ComparePointPoly.mls │ │ │ ├── ExpressionProblem.mls │ │ │ ├── Intro.mls │ │ │ ├── PolymorphicVariants.mls │ │ │ ├── SimpleRegionDSL_annot.mls │ │ │ └── SimpleRegionDSL_raw.mls │ │ ├── ex/ │ │ │ ├── RepMin.mls │ │ │ └── UnboxedOptions.mls │ │ ├── fcp/ │ │ │ ├── AA.mls │ │ │ ├── Aleks.mls │ │ │ ├── Aliases.mls │ │ │ ├── Basics.mls │ │ │ ├── Church_CT.mls │ │ │ ├── Church_ST.mls │ │ │ ├── ConstrainedTypes1.mls │ │ │ ├── ConstrainedTypes2.mls │ │ │ ├── Demo.mls │ │ │ ├── Distrib.mls │ │ │ ├── Distrib2.mls │ │ │ ├── DistribRight.mls │ │ │ ├── DistribUnionInter.mls │ │ │ ├── DistribWorsening.mls │ │ │ ├── FCPTony.mls │ │ │ ├── FCPTony3.mls │ │ │ ├── Fiota.mls │ │ │ ├── ForallTerms.mls │ │ │ ├── FunnyId.mls │ │ │ ├── Inst.mls │ │ │ ├── InvariantPolyContainer.mls │ │ │ ├── ListBuild.mls │ │ │ ├── Min1_ex_shallow.mls │ │ │ ├── MoreChurch.mls │ │ │ ├── NestedDataTypes.mls │ │ │ ├── NestedDataTypesGADT.mls │ │ │ ├── NoRecursiveTypes.mls │ │ │ ├── OCamlList.mls │ │ │ ├── OverloadSimplif.mls │ │ │ ├── Overloads.mls │ │ │ ├── Overloads_Precise.mls │ │ │ ├── Paper.mls │ │ │ ├── PaperTable.mls │ │ │ ├── PolyParams.mls │ │ │ ├── PolymorphicTypeAliases.mls │ │ │ ├── Proofs.mls │ │ │ ├── QML_exist_Classes.mls │ │ │ ├── QML_exist_Classes_min.mls │ │ │ ├── QML_exist_Records_D.mls │ │ │ ├── QML_exist_Records_ND.mls │ │ │ ├── QML_exist_Records_min_1.mls │ │ │ ├── QML_exist_Records_min_2.mls │ │ │ ├── QML_exist_Records_min_3.mls │ │ │ ├── QML_exist_nu.mls │ │ │ ├── Rank2.mls │ │ │ ├── RecExtr.mls │ │ │ ├── SelfAppMin.mls │ │ │ ├── Simplif.mls │ │ │ ├── SkolemErrors.mls │ │ │ ├── Skolems.mls │ │ │ ├── Skolems2.mls │ │ │ ├── Skolems3.mls │ │ │ ├── SystemF.mls │ │ │ ├── SystemF_2.mls │ │ │ ├── ToChurchSimplif_CT.mls │ │ │ ├── ToChurchSimplif_ST.mls │ │ │ ├── Vec.mls │ │ │ └── YicongFCP.mls │ │ ├── fcp-lit/ │ │ │ ├── Boxy.mls │ │ │ ├── CPS_LB.mls │ │ │ ├── FreezeML.mls │ │ │ ├── GHC-rank-n.mls │ │ │ ├── HMF.mls │ │ │ ├── HML.mls │ │ │ ├── Jim.mls │ │ │ ├── Leijen.mls │ │ │ ├── MLF.mls │ │ │ ├── Misc.mls │ │ │ ├── PolyML.mls │ │ │ ├── QML.mls │ │ │ ├── Stability.mls │ │ │ └── variations_PolyML.mls │ │ ├── gadt/ │ │ │ ├── Exp1.mls │ │ │ ├── Exp2.mls │ │ │ └── ThisMatching.mls │ │ ├── gen/ │ │ │ └── genTests_v1-0.14-15-x2.fun │ │ ├── mlf-examples/ │ │ │ ├── ex_casparticuliers.mls │ │ │ ├── ex_concrete.mls │ │ │ ├── ex_demo.mls │ │ │ ├── ex_hashtbl.mls │ │ │ ├── ex_predicative.mls │ │ │ ├── ex_propagate.mls │ │ │ ├── ex_rvr_validate.mls │ │ │ ├── ex_selfapp.mls │ │ │ ├── ex_shallow.mls │ │ │ ├── ex_validate.mls │ │ │ ├── ex_voir.mls │ │ │ ├── ex_vr_validate.mls │ │ │ ├── merge_regression_min.mls │ │ │ └── variations_ex_hashtbl.mls │ │ ├── mlscript/ │ │ │ ├── ADTs.mls │ │ │ ├── ADTsRepro.mls │ │ │ ├── Addable.mls │ │ │ ├── AdtStyle.mls │ │ │ ├── AlexJ.mls │ │ │ ├── Annoying.mls │ │ │ ├── Arrays.mls │ │ │ ├── Arrays2.mls │ │ │ ├── Ascribe.mls │ │ │ ├── Baber.mls │ │ │ ├── BadAlias.mls │ │ │ ├── BadClasses.mls │ │ │ ├── BadInherit.mls │ │ │ ├── BadInherit2.mls │ │ │ ├── BadInherit2Co.mls │ │ │ ├── BadMethods.mls │ │ │ ├── BadPolym.mls │ │ │ ├── BadTraits.mls │ │ │ ├── BadTypes.mls │ │ │ ├── Basics.mls │ │ │ ├── Boolean.mls │ │ │ ├── BooleanFail.mls │ │ │ ├── ByNameByValue.mls │ │ │ ├── David.mls │ │ │ ├── David2.mls │ │ │ ├── DavidB.mls │ │ │ ├── Didier.mls │ │ │ ├── Dmitry.mls │ │ │ ├── EitherClasses.mls │ │ │ ├── ExplicitVariance.mls │ │ │ ├── ExprProb.mls │ │ │ ├── ExprProb2.mls │ │ │ ├── ExprProb_Inv.mls │ │ │ ├── FatNegs.mls │ │ │ ├── FunnySubsumptions.mls │ │ │ ├── GenericClasses.mls │ │ │ ├── GenericClasses2.mls │ │ │ ├── Group_2021_12_02.mls │ │ │ ├── Group_2022_05_10.mls │ │ │ ├── Group_2022_06_09.mls │ │ │ ├── HeadOption.mls │ │ │ ├── Huawei2.mls │ │ │ ├── Inherit.mls │ │ │ ├── InheritSimple.mls │ │ │ ├── JetBrains.mls │ │ │ ├── LetPolym.mls │ │ │ ├── LineComments.mls │ │ │ ├── Lists.mls │ │ │ ├── Luyu.mls │ │ │ ├── MLList.mls │ │ │ ├── MLTuples.mls │ │ │ ├── Match1.mls │ │ │ ├── Match2.mls │ │ │ ├── Match3.mls │ │ │ ├── MatchBool.mls │ │ │ ├── MethodAndMatches.mls │ │ │ ├── Methods.mls │ │ │ ├── Methods2.mls │ │ │ ├── Misc.mls │ │ │ ├── MiscExtrusion.mls │ │ │ ├── Mohammad.mls │ │ │ ├── MultiArgs.mls │ │ │ ├── Mut.mls │ │ │ ├── Mut2.mls │ │ │ ├── MutArray.mls │ │ │ ├── Neg.mls │ │ │ ├── NestedClassArgs.mls │ │ │ ├── NestedClassArgs_Co.mls │ │ │ ├── NestedMatch.mls │ │ │ ├── NestedRecursiveMatch.mls │ │ │ ├── OccursCheck.mls │ │ │ ├── Ops.mls │ │ │ ├── OtherErrors.mls │ │ │ ├── Paper.mls │ │ │ ├── PolyVariant.mls │ │ │ ├── PolyVariantCodeReuse.mls │ │ │ ├── Polym.mls │ │ │ ├── PolymExtrusion.mls │ │ │ ├── PolymorphicExtension.mls │ │ │ ├── PreservationFail.mls │ │ │ ├── ProvFlows.mls │ │ │ ├── Random1.mls │ │ │ ├── Random2.mls │ │ │ ├── RecDefs.mls │ │ │ ├── RecErrors.mls │ │ │ ├── RecursiveTypes.mls │ │ │ ├── RecursiveTypes2.mls │ │ │ ├── References.mls │ │ │ ├── Repro.mls │ │ │ ├── RigidVariables.mls │ │ │ ├── SafeDiv.mls │ │ │ ├── Scratch.mls │ │ │ ├── SelfNeg.mls │ │ │ ├── SelfNegs.mls │ │ │ ├── Seqs.mls │ │ │ ├── Sequence.mls │ │ │ ├── Signatures.mls │ │ │ ├── Simple.mls │ │ │ ├── SimpleErrors.mls │ │ │ ├── SimpleMethods.mls │ │ │ ├── Splice.mls │ │ │ ├── Stress.mls │ │ │ ├── StressDNF.mls │ │ │ ├── StressTraits.mls │ │ │ ├── StressUgly.mls │ │ │ ├── Subsume.mls │ │ │ ├── Test.mls │ │ │ ├── This.mls │ │ │ ├── Ticks.mls │ │ │ ├── Tony.mls │ │ │ ├── TraitMatching.mls │ │ │ ├── Traits.mls │ │ │ ├── Trans.mls │ │ │ ├── TrickyExtrusion.mls │ │ │ ├── TrickySimplif.mls │ │ │ ├── Trio.mls │ │ │ ├── TupleArray.mls │ │ │ ├── TupleArray2.mls │ │ │ ├── TypeClasses.mls │ │ │ ├── TypeDefs.mls │ │ │ ├── TypeRanges.mls │ │ │ ├── TypeRefs.mls │ │ │ ├── TypeTags.mls │ │ │ ├── Undef.mls │ │ │ ├── Undefined.mls │ │ │ ├── Under.mls │ │ │ ├── VarCycles.mls │ │ │ ├── Variant-sub-ad-hoc.mls │ │ │ ├── Variant-sub.mls │ │ │ ├── Weird.mls │ │ │ ├── Wildcards.mls │ │ │ ├── With.mls │ │ │ ├── Yicong.mls │ │ │ ├── Yuheng.mls │ │ │ ├── i26.mls │ │ │ ├── i56.mls │ │ │ └── i65.mls │ │ ├── nu/ │ │ │ ├── AbstractClasses.mls │ │ │ ├── Andong.mls │ │ │ ├── Annotations.mls │ │ │ ├── ArrayProg.mls │ │ │ ├── Ascription.mls │ │ │ ├── AuxCtors.mls │ │ │ ├── BadAliases.mls │ │ │ ├── BadBlocks.mls │ │ │ ├── BadClassInherit.mls │ │ │ ├── BadClassSignatures.mls │ │ │ ├── BadClasses.mls │ │ │ ├── BadFieldInit.mls │ │ │ ├── BadLets.mls │ │ │ ├── BadMixins.mls │ │ │ ├── BadScopes.mls │ │ │ ├── BadSignatures.mls │ │ │ ├── BadSuper.mls │ │ │ ├── BadTraits.mls │ │ │ ├── BadUCS.mls │ │ │ ├── BasicClassInheritance.mls │ │ │ ├── BasicClasses.mls │ │ │ ├── BasicMixins.mls │ │ │ ├── CallByName.mls │ │ │ ├── CaseExpr.mls │ │ │ ├── ClassField.mls │ │ │ ├── ClassInstantiation.mls │ │ │ ├── ClassSignatures.mls │ │ │ ├── ClassesInMixins.mls │ │ │ ├── CommaOperator.mls │ │ │ ├── CtorSubtraction.mls │ │ │ ├── CycleTypeDefErrors.mls │ │ │ ├── Darin.mls │ │ │ ├── Dates.mls │ │ │ ├── DecLit.mls │ │ │ ├── Declarations.mls │ │ │ ├── DiamondInherit.mls │ │ │ ├── DidierNu.mls │ │ │ ├── Eduardo.mls │ │ │ ├── EncodedLists.mls │ │ │ ├── Eql.mls │ │ │ ├── EqlClasses.mls │ │ │ ├── Eval.mls │ │ │ ├── EvalNegNeg.mls │ │ │ ├── ExplicitVariance.mls │ │ │ ├── ExpressionProblem_repro.mls │ │ │ ├── ExpressionProblem_small.mls │ │ │ ├── Extrusion.mls │ │ │ ├── FieldRefinement.mls │ │ │ ├── FilterMap.mls │ │ │ ├── FlatIfThenElse.mls │ │ │ ├── FlatIndentFuns.mls │ │ │ ├── FlatMonads.mls │ │ │ ├── FlatMonads_repro.mls │ │ │ ├── FunPatterns.mls │ │ │ ├── FunPoly.mls │ │ │ ├── FunSigs.mls │ │ │ ├── FunnyIndet.mls │ │ │ ├── FunnyPoly.mls │ │ │ ├── GADTMono.mls │ │ │ ├── GenericClassInheritance.mls │ │ │ ├── GenericClasses.mls │ │ │ ├── GenericMethods.mls │ │ │ ├── GenericMixins.mls │ │ │ ├── GenericModules.mls │ │ │ ├── HeungTung.mls │ │ │ ├── Huawei1.mls │ │ │ ├── ImplicitMethodPolym.mls │ │ │ ├── InferredInheritanceTypeArgs.mls │ │ │ ├── InheritanceLevelMismatches.mls │ │ │ ├── IntLit.mls │ │ │ ├── InterfaceGeneric.mls │ │ │ ├── InterfaceMono.mls │ │ │ ├── Interfaces.mls │ │ │ ├── IntraBlockPolymorphism.mls │ │ │ ├── Jonathan.mls │ │ │ ├── LamPatterns.mls │ │ │ ├── LetRec.mls │ │ │ ├── ListConsNil.mls │ │ │ ├── LitMatch.mls │ │ │ ├── LocalLets.mls │ │ │ ├── MIscPoly.mls │ │ │ ├── MemberConfusion.mls │ │ │ ├── MemberIntersections.mls │ │ │ ├── MetaWrap.mls │ │ │ ├── Metaprog.mls │ │ │ ├── MethodSignatures.mls │ │ │ ├── Misc.mls │ │ │ ├── MissingImplBug.mls │ │ │ ├── MissingTypeArg.mls │ │ │ ├── Mixin42.mls │ │ │ ├── MixinParameters.mls │ │ │ ├── ModuleParameters.mls │ │ │ ├── Mut.mls │ │ │ ├── MutLet.mls │ │ │ ├── MutualRec.mls │ │ │ ├── NamedArgs.mls │ │ │ ├── NestedClasses.mls │ │ │ ├── NestedRecords.mls │ │ │ ├── New.mls │ │ │ ├── NewNew.mls │ │ │ ├── NoThisCtor.mls │ │ │ ├── NuAlexJ.mls │ │ │ ├── NuForallTerms.mls │ │ │ ├── NuPolymorphicTypeAliases.mls │ │ │ ├── NuScratch.mls │ │ │ ├── Numbers.mls │ │ │ ├── Object.mls │ │ │ ├── OpLam.mls │ │ │ ├── OptionFilter.mls │ │ │ ├── OverrideShorthand.mls │ │ │ ├── ParamImplementing.mls │ │ │ ├── ParamOverride.mls │ │ │ ├── ParamOverriding.mls │ │ │ ├── ParamPassing.mls │ │ │ ├── Parens.mls │ │ │ ├── PartialApp.mls │ │ │ ├── PolymorphicVariants_Alt.mls │ │ │ ├── PostHocMixinSignature.mls │ │ │ ├── PrivateMemberOverriding.mls │ │ │ ├── RawUnionTraitSignatures.mls │ │ │ ├── Ref.mls │ │ │ ├── RefinedPattern.mls │ │ │ ├── Refinements.mls │ │ │ ├── Res.mls │ │ │ ├── RightAssocOps.mls │ │ │ ├── RigidVariables.mls │ │ │ ├── SelfAppMethods.mls │ │ │ ├── SelfRec.mls │ │ │ ├── Sidney.mls │ │ │ ├── SimpleSymbolicOps.mls │ │ │ ├── SimpleTraitImpl.mls │ │ │ ├── Splices.mls │ │ │ ├── StupidJS.mls │ │ │ ├── Subscripts.mls │ │ │ ├── TODO_Classes.mls │ │ │ ├── ThisRefinedClasses.mls │ │ │ ├── TraitParameters.mls │ │ │ ├── TraitSignatures.mls │ │ │ ├── TrickyExtrusion2.mls │ │ │ ├── TrickyGenericInheritance.mls │ │ │ ├── TupleParamBlunder.mls │ │ │ ├── Tuples.mls │ │ │ ├── TypeAliases.mls │ │ │ ├── TypeOps.mls │ │ │ ├── TypeSelections.mls │ │ │ ├── TypeVariables.mls │ │ │ ├── TypingUnitTerms.mls │ │ │ ├── TypreMembers.mls │ │ │ ├── Unapply.mls │ │ │ ├── UnaryMinus.mls │ │ │ ├── UndefMatching.mls │ │ │ ├── Uninstantiable.mls │ │ │ ├── UnionReordering.mls │ │ │ ├── Unit.mls │ │ │ ├── UserDefinedAnnotations.mls │ │ │ ├── ValSigs.mls │ │ │ ├── Vals.mls │ │ │ ├── Varargs.mls │ │ │ ├── Virtual.mls │ │ │ ├── WeirdDefs.mls │ │ │ ├── WeirdUnions.mls │ │ │ ├── With.mls │ │ │ ├── i180.mls │ │ │ ├── i191.mls │ │ │ ├── repro0.mls │ │ │ ├── repro1.mls │ │ │ ├── repro_EvalNegNeg.mls │ │ │ └── repro_PolymorphicVariants.mls │ │ ├── parser/ │ │ │ ├── Annot.mls │ │ │ ├── Arrays.mls │ │ │ ├── BasicSyntax.mls │ │ │ ├── Binds.mls │ │ │ ├── Blocks.mls │ │ │ ├── Brackets.mls │ │ │ ├── Classes.mls │ │ │ ├── Comments.mls │ │ │ ├── ControversialIfSplits.mls │ │ │ ├── FatArrows.mls │ │ │ ├── FlatMultiArgLams.mls │ │ │ ├── Forall.mls │ │ │ ├── Fun.mls │ │ │ ├── IfThenElse.mls │ │ │ ├── Lambdas.mls │ │ │ ├── Lets.mls │ │ │ ├── Misc.mls │ │ │ ├── MultiLineCalls.mls │ │ │ ├── MultilineFun.mls │ │ │ ├── NamedArrays.mls │ │ │ ├── NegativeLits.mls │ │ │ ├── New.mls │ │ │ ├── Ops.mls │ │ │ ├── Records.mls │ │ │ ├── Select.mls │ │ │ ├── SpecParams.mls │ │ │ ├── Subscripts.mls │ │ │ ├── TypeParams.mls │ │ │ ├── UserDefinedOpsMaybe.mls │ │ │ ├── WeirdIfs.mls │ │ │ ├── Where.mls │ │ │ ├── Whitespace.mls │ │ │ └── boolops.mls │ │ ├── pretyper/ │ │ │ ├── Errors.mls │ │ │ ├── Repro.mls │ │ │ ├── SymbolKind.mls │ │ │ └── ucs/ │ │ │ ├── DualOption.mls │ │ │ ├── NamePattern.mls │ │ │ ├── RecordPattern.mls │ │ │ ├── Refinement.mls │ │ │ ├── SpecilizationCollision.mls │ │ │ ├── Symbol.mls │ │ │ ├── Unapply.mls │ │ │ ├── Unconditional.mls │ │ │ ├── coverage/ │ │ │ │ ├── ConflictedCoveredCases.mls │ │ │ │ ├── ConflictedPatterns.mls │ │ │ │ ├── CoveredCases.mls │ │ │ │ ├── DuplicatedCases.mls │ │ │ │ ├── MissingCases.mls │ │ │ │ ├── Refinement.mls │ │ │ │ ├── SealedClasses.mls │ │ │ │ ├── Tautology.mls │ │ │ │ └── Unreachable.mls │ │ │ ├── examples/ │ │ │ │ ├── AVLTree.mls │ │ │ │ ├── BinarySearchTree.mls │ │ │ │ ├── Calculator.mls │ │ │ │ ├── EitherOrBoth.mls │ │ │ │ ├── JSON.mls │ │ │ │ ├── LeftistTree.mls │ │ │ │ ├── LispInterpreter.mls │ │ │ │ ├── List.mls │ │ │ │ ├── ListFold.mls │ │ │ │ ├── Option.mls │ │ │ │ ├── Permutations.mls │ │ │ │ ├── STLC.mls │ │ │ │ ├── SimpleLisp.mls │ │ │ │ ├── SimpleList.mls │ │ │ │ ├── SimpleTree.mls │ │ │ │ └── ULC.mls │ │ │ ├── patterns/ │ │ │ │ ├── AliasPattern.mls │ │ │ │ ├── Literals.mls │ │ │ │ └── SimpleTuple.mls │ │ │ └── stages/ │ │ │ ├── Normalization.mls │ │ │ ├── PostProcessing.mls │ │ │ └── Transformation.mls │ │ ├── qq/ │ │ │ ├── BadConst.mls │ │ │ ├── Basic.mls │ │ │ ├── Basic2.mls │ │ │ ├── Codegen.mls │ │ │ ├── EffectfulLetInsertion.mls │ │ │ ├── Extrusions.mls │ │ │ ├── Hygiene.mls │ │ │ ├── LetInsertion.mls │ │ │ ├── LetInsertion_repro.mls │ │ │ ├── Multiline.mls │ │ │ ├── Nested.mls │ │ │ ├── NuSyntax.mls │ │ │ ├── PEPM.mls │ │ │ ├── PEPM2.mls │ │ │ ├── PseudoCod.mls │ │ │ ├── QQFlag.mls │ │ │ ├── ScopeTypes.mls │ │ │ ├── Triple.mls │ │ │ ├── Unquote.mls │ │ │ ├── Weird.mls │ │ │ └── WillfulExtrusion.mls │ │ ├── scalac/ │ │ │ └── i13162.mls │ │ ├── tricky/ │ │ │ ├── IrregularSubtypes.mls │ │ │ ├── IrregularSubtypes2.mls │ │ │ └── Pottier.fun │ │ ├── typegen/ │ │ │ ├── TypegenTerms.mls │ │ │ └── TypegenTypedefs.mls │ │ └── ucs/ │ │ ├── AppSplits.mls │ │ ├── CrossBranchCapture.mls │ │ ├── DirectLines.mls │ │ ├── ElseIf.mls │ │ ├── ErrorMessage.mls │ │ ├── Exhaustiveness.mls │ │ ├── Humiliation.mls │ │ ├── Hygiene.mls │ │ ├── HygienicBindings.mls │ │ ├── InterleavedLet.mls │ │ ├── LeadingAnd.mls │ │ ├── LitUCS.mls │ │ ├── MultiwayIf.mls │ │ ├── NestedBranches.mls │ │ ├── NestedOpSplits.mls │ │ ├── NestedPattern.mls │ │ ├── NuPlainConditionals.mls │ │ ├── Or.mls │ │ ├── OverlappedBranches.mls │ │ ├── ParseFailures.mls │ │ ├── ParserFailures.mls │ │ ├── PlainConditionals.mls │ │ ├── SimpleUCS.mls │ │ ├── SplitAfterOp.mls │ │ ├── SplitAnd.mls │ │ ├── SplitAroundOp.mls │ │ ├── SplitBeforeOp.mls │ │ ├── SplitOps.mls │ │ ├── SplitScrutinee.mls │ │ ├── ThenIndent.mls │ │ ├── Tree.mls │ │ ├── TrivialIf.mls │ │ ├── WeirdIf.mls │ │ ├── WeirdSplit.mls │ │ ├── Wildcard.mls │ │ └── zipWith.mls │ └── scala/ │ └── mlscript/ │ ├── CodeGenTestHelpers.scala │ ├── DiffTests.scala │ ├── NodeTest.scala │ └── ReplHost.scala ├── ts/ │ └── dummy.ts ├── ts2mls/ │ ├── js/ │ │ └── src/ │ │ ├── main/ │ │ │ └── scala/ │ │ │ └── ts2mls/ │ │ │ ├── JSWriter.scala │ │ │ ├── TSCompilerInfo.scala │ │ │ ├── TSData.scala │ │ │ ├── TSNamespace.scala │ │ │ ├── TSProgram.scala │ │ │ ├── TSSourceFile.scala │ │ │ └── types/ │ │ │ ├── Converter.scala │ │ │ └── TSType.scala │ │ └── test/ │ │ ├── diff/ │ │ │ ├── Array.d.mls │ │ │ ├── BasicFunctions.d.mls │ │ │ ├── ClassMember.d.mls │ │ │ ├── Dec.d.mls │ │ │ ├── Enum.d.mls │ │ │ ├── Heritage.d.mls │ │ │ ├── HighOrderFunc.d.mls │ │ │ ├── InterfaceMember.d.mls │ │ │ ├── Intersection.d.mls │ │ │ ├── Literal.d.mls │ │ │ ├── MultiFiles.d.mls │ │ │ ├── Namespace.d.mls │ │ │ ├── Optional.d.mls │ │ │ ├── Overload.d.mls │ │ │ ├── Tuple.d.mls │ │ │ ├── Type.d.mls │ │ │ ├── TypeParameter.d.mls │ │ │ ├── Union.d.mls │ │ │ └── Variables.d.mls │ │ ├── scala/ │ │ │ └── ts2mls/ │ │ │ └── TSTypeGenerationTests.scala │ │ └── typescript/ │ │ ├── Array.ts │ │ ├── BasicFunctions.ts │ │ ├── ClassMember.ts │ │ ├── Dec.d.ts │ │ ├── Enum.ts │ │ ├── Heritage.ts │ │ ├── HighOrderFunc.ts │ │ ├── InterfaceMember.ts │ │ ├── Intersection.ts │ │ ├── Literal.ts │ │ ├── Multi1.ts │ │ ├── Multi2.ts │ │ ├── Multi3.ts │ │ ├── Namespace.ts │ │ ├── Optional.ts │ │ ├── Overload.ts │ │ ├── Tuple.ts │ │ ├── Type.ts │ │ ├── TypeParameter.ts │ │ ├── Union.ts │ │ └── Variables.ts │ └── jvm/ │ └── src/ │ └── test/ │ └── scala/ │ └── ts2mls/ │ └── TsTypeDiffTests.scala ├── tsconfig.json └── vim/ └── mlscript.vim