From f85b5d67851def4e01d0233f7ec975b928867013 Mon Sep 17 00:00:00 2001 From: Michael Zhang Date: Wed, 1 Nov 2023 22:50:11 -0500 Subject: [PATCH] ok fuck rescript --- .gitignore | 6 ++++- __tests__/terms_test.res | 17 ++++++++++++++ babel.config.js | 9 ++++++++ bidir-writeup.typ | 3 +++ bsconfig.json | 12 +++++----- bun.lockb | Bin 1383 -> 277242 bytes jest.config.json | 10 +++++++++ package.json | 9 ++++++-- src/bidir.res | 47 +++++++++++++++++++++------------------ src/data.res | 37 +++++++++++++----------------- 10 files changed, 98 insertions(+), 52 deletions(-) create mode 100644 __tests__/terms_test.res create mode 100644 babel.config.js create mode 100644 bidir-writeup.typ create mode 100644 jest.config.json diff --git a/.gitignore b/.gitignore index 6c57e11..1454376 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,11 @@ *.pdf _build +*.bs.mjs *.bs.js node_modules -lib/bs \ No newline at end of file +lib/bs + +__tests__/**/*.mjs +src/**/*.mjs \ No newline at end of file diff --git a/__tests__/terms_test.res b/__tests__/terms_test.res new file mode 100644 index 0000000..099b1fc --- /dev/null +++ b/__tests__/terms_test.res @@ -0,0 +1,17 @@ +open Jest +open Belt +open Data +open Bidir + +open Expect +open! Expect.Operators + +let mapFirst = a => a->Result.map(((x, _)) => x) + +test("id", () => { + let id: term = Lam("x", Var("x")) + let ctx = list{} + let typ = synthesize(ctx, id)->mapFirst + Js.Console.error2("output: ", typ) + expect(typ) === Ok(TPolytype("ex0", TArrow(TVar("ex0"), TVar("ex0")))) +}) diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..805b799 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,9 @@ +module.exports = { + presets: [ + [ + "@babel/preset-env", + { targets: { node: "current", esmodules: false }, modules: "cjs" }, + ], + ], + plugins: [], +}; diff --git a/bidir-writeup.typ b/bidir-writeup.typ new file mode 100644 index 0000000..dfb1923 --- /dev/null +++ b/bidir-writeup.typ @@ -0,0 +1,3 @@ += Expressions + +- $ id : forall a. a arrow.r a $ diff --git a/bsconfig.json b/bsconfig.json index 928db21..2bac544 100644 --- a/bsconfig.json +++ b/bsconfig.json @@ -1,17 +1,17 @@ { "name": "your-project-name", + "bsc-flags": [], "sources": [ - { - "dir": "src", - "subdirs": true - } + { "dir": "src", "subdirs": true }, + { "dir": "__tests__", "subdirs": true, "type": "dev" } ], "package-specs": [ { - "module": "es6", + "module": "commonjs", "in-source": true } ], "suffix": ".bs.js", - "bs-dependencies": [] + "bs-dependencies": [], + "bs-dev-dependencies": ["@glennsl/bs-jest"] } diff --git a/bun.lockb b/bun.lockb index 338c8ef5041b56121d67a9b596bea1959778e32a..3f57b2a34690ec71cdfa51e6e4f508c2fafce943 100755 GIT binary patch literal 277242 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
    }p5 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�L(flXZ5F#IP&m6{^cm7 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 delta 365 zcmezMRp2?-1U)UcZ@iD@q;Kp$u=4tnQ)_2ldMtJI;8mSMP2FGqXOy@1CtPP?00Sn5 zi4k(zRZI{bf-FicPAT2G)HI)@ z$ugNmTYwWJ0m2NEWj_~8e)`#Y@)r#ePNWm_aNC1{P+9>D~QIs@w)p0TYOTB0oq~22`*KD0q20lcp-n4=}fL zz#PkP0je~Bg<<;n1ZKzSe2L6Xf*>n685kO}hSYG#nMU4 Qs?+}@G5b$XvSOJ50G+5_`~Uy| diff --git a/jest.config.json b/jest.config.json new file mode 100644 index 0000000..2428146 --- /dev/null +++ b/jest.config.json @@ -0,0 +1,10 @@ +{ + "verbose": true, + "moduleFileExtensions": ["js", "mjs"], + "extensionsToTreatAsEsm": [".bs.mjs"], + "testMatch": ["**/__tests__/**/*_test.mjs", "**/__tests__/**/*_test.bs.js"], + "transform": { + "^.+.m?js$": "babel-jest" + }, + "transformIgnorePatterns": ["node_modules/(?!(rescript)/)"] +} diff --git a/package.json b/package.json index f033ba3..ee023c3 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,14 @@ { "scripts": { "res:build": "rescript", - "res:dev": "rescript build -w" + "res:dev": "rescript build -w", + "test": "retest lib/**/*.mjs" }, "devDependencies": { - "rescript": "^10.1.4" + "@glennsl/bs-jest": "^0.7.0", + "jest": "^29.7.0", + "rescript": "^10.1.4", + "rescript-js": "^1.0.0-beta.2", + "rescript-test": "^5.0.0" } } diff --git a/src/bidir.res b/src/bidir.res index 1eeb97e..51bef48 100644 --- a/src/bidir.res +++ b/src/bidir.res @@ -5,7 +5,7 @@ let _genSymCtr = ref(0) let genSym = (~prefix="var", ()): string => { let num = _genSymCtr.contents _genSymCtr := num + 1 - `${prefix}${Int.toString(num)}` + `${prefix}${num->Int.toString}` } let rec isSubtype = (ctx: context, tyA: typ, tyB: typ): result => { @@ -17,31 +17,30 @@ let rec isSubtype = (ctx: context, tyA: typ, tyB: typ): result and typecheck = (ctx: context, term: term, typ: typ): result => { switch (term, typ) { // 1I rule - | (Unit, Unit) => Ok(ctx) + | (Unit, TUnit) => Ok(ctx) // ∀I rule - | (e, Polytype(x, tyA)) => failwith("TODO") + | (e, TPolytype(x, tyA)) => failwith("TODO ∀I-rule") // →I rule - | (Lam(x, e), Arrow(tyA, tyB)) => + | (Lam(x, e), TArrow(tyA, tyB)) => let augmentedCtx = ctx->List.add(TermAnnot(x, tyA)) typecheck(augmentedCtx, e, tyB)->Result.map(_ => ctx) // Sub rule - // TODO: Subtyping rule??? - - | (Var(_) | Lam(_, _) | App(_, _) | Annot(_, _), _) => failwith("TODO") - | _ => Error("could not resolve") + | (_, _) => + let tyA = synthesize(ctx, term) + let tyA' = applyContext(ctx, tyA) } } and synthesize = (ctx: context, term: term): result<(typ, context), string> => { switch term { // Var rule - | Var(name) => Ok(lookupTypeVariable(ctx, name), ctx) + | Var(name) => lookupTypeVariable(ctx, name)->Result.map(ty => (ty, ctx)) // 1I⇒ rule - | Unit => Ok(Unit, ctx) + | Unit => Ok(TUnit, ctx) // Anno rule | Annot(e, tyA) => typecheck(ctx, e, tyA)->Result.map(ctx => (tyA, ctx)) @@ -51,35 +50,39 @@ and synthesize = (ctx: context, term: term): result<(typ, context), string> => { // TODO: Check x and e let exA = genSym(~prefix="ex", ()) let exB = genSym(~prefix="ex", ()) - Ok(Arrow(Existential(exA), Existential(exB)), ctx) + let augmentedCtx = list{TermAnnot(x, TVar(exA)), TypeVar(exB), TypeVar(exA), ...ctx} + typecheck(augmentedCtx, e, TVar(exB))->Result.map(_ => ( + TArrow(TExistential(exA), TExistential(exB)), + ctx, + )) // →E rule - | App(e1, e2) => failwith("TODO") + | App(e1, e2) => synthesize(ctx, e1)->Result.flatMap(((tyA, ctx)) => appSynthesize(ctx, tyA, e2)) } } and appSynthesize = (ctx: context, funTy: typ, term: term): result<(typ, context), string> => { switch (funTy, term) { // →App rule - | (Arrow(tyA, tyC), e) => typecheck(ctx, e, tyA)->Result.map(_ => (tyC, ctx)) + | (TArrow(tyA, tyC), e) => typecheck(ctx, e, tyA)->Result.map(_ => (tyC, ctx)) // ∀App rule - | (Polytype(a, tyA), e) => failwith("TODO") + | (TPolytype(a, tyA), e) => failwith("TODO") // âApp rule - | (Existential(_), _) => failwith("TODO") + | (TExistential(_), _) => failwith("TODO") - | (Unit | Var(_), _) => Error("trying to appSynthesize with a non-function type") + | (TUnit | TVar(_), _) => Error("trying to appSynthesize with a non-function type") } } // Figure 8. Applying a context, as a substitution, to a type -let rec applyContext = (ctx: context, typ: typ): typ => { +and applyContext = (ctx: context, typ: typ): typ => { switch typ { - | Unit => Unit - | Var(x) => Var(x) - | Existential(_) => failwith("TODO") - | Polytype(_) => failwith("TODO") - | Arrow(a, b) => Arrow(applyContext(ctx, a), applyContext(ctx, b)) + | TUnit => TUnit + | TVar(x) => TVar(x) + | TExistential(_) => failwith("TODO") + | TPolytype(_) => failwith("TODO") + | TArrow(a, b) => TArrow(applyContext(ctx, a), applyContext(ctx, b)) } } diff --git a/src/data.res b/src/data.res index d47b15c..d64a93a 100644 --- a/src/data.res +++ b/src/data.res @@ -1,6 +1,3 @@ -// Disable warning about the same constructor for different types -@@warning("-30") - type rec term = | Unit // () | Var(string) // x @@ -9,18 +6,18 @@ type rec term = | Annot(term, typ) // (e : A) and typ = - | Unit // 1 - | Var(string) // α - | Existential(string) // â - | Polytype(string, typ) // ∀α.A - | Arrow(typ, typ) // A -> B + | TUnit // 1 + | TVar(string) // α + | TExistential(string) // â + | TPolytype(string, typ) // ∀α.A + | TArrow(typ, typ) // A -> B and monotyp = // Unit monotype - | Unit // 1 - | Var(string) // α - | Existential(string) // â - | Arrow(monotyp, monotyp) // τ -> σ + | MUnit // 1 + | MVar(string) // α + | MExistential(string) // â + | MArrow(monotyp, monotyp) // τ -> σ type rec contextEntry = | TypeVar(string) // Γ,α @@ -30,20 +27,18 @@ type rec contextEntry = | Marker(string) // Γ,🢒â type rec completeContextEntry = - | TypeVar(string) // Ω,α - | TermAnnot(string, typ) // Ω,x:A - | ExistentialSolved(string, monotyp) // Ω,â=τ - | Marker(string) // Ω,🢒â + | CCTypeVar(string) // Ω,α + | CCTermAnnot(string, typ) // Ω,x:A + | CCExistentialSolved(string, monotyp) // Ω,â=τ + | CCMarker(string) // Ω,🢒â type context = list -@@warning("+30") - /** Context lookup */ -let rec lookupTypeVariable = (ctx: list, name: string): typ => { +let rec lookupTypeVariable = (ctx: list, name: string): result => { switch ctx { - | list{} => failwith("L") - | list{TermAnnot(n, t), ..._} if n == name => t + | list{} => Error(`could not find name ${name}`) + | list{TermAnnot(n, t), ..._} if n == name => Ok(t) | list{_, ...rest} => lookupTypeVariable(rest, name) } }