summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/src/Minilang/Lambda.hs
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud@pankzsoft.com>2025-11-01 17:45:25 +0100
committerArnaud Bailly <arnaud@pankzsoft.com>2025-11-01 17:45:25 +0100
commit2a20afb971ef3323955964b1bbb5f75af4ca5fcb (patch)
tree575b3ef097729846ac09e18e2d579ae0577accd8 /lambda-calcul/haskell/src/Minilang/Lambda.hs
parent1d1f0efc7de1eaa0c8a6b503892c2f950008fde6 (diff)
downloadlambda-nantes-2a20afb971ef3323955964b1bbb5f75af4ca5fcb.tar.gz
Add server capability
Diffstat (limited to 'lambda-calcul/haskell/src/Minilang/Lambda.hs')
-rw-r--r--lambda-calcul/haskell/src/Minilang/Lambda.hs25
1 files changed, 25 insertions, 0 deletions
diff --git a/lambda-calcul/haskell/src/Minilang/Lambda.hs b/lambda-calcul/haskell/src/Minilang/Lambda.hs
new file mode 100644
index 0000000..9d0f3cf
--- /dev/null
+++ b/lambda-calcul/haskell/src/Minilang/Lambda.hs
@@ -0,0 +1,25 @@
+module Minilang.Lambda where
+
+import Minilang.Lambda.DeBruijn (eval, fromDeBruijn, toDeBruijn)
+import Minilang.Lambda.Eval (Env, Term)
+import Minilang.Lambda.Infer (Context, TypeError, infer)
+import Minilang.Lambda.Parser (AST, desugar)
+import Minilang.Lambda.Unify (Type)
+
+-- | Top-level evaluator
+-- Load an AST into given `Env` and `Context`, returning an extended
+-- `Env` and `Context` with declarations bound
+loadProgram ::
+ AST ->
+ Env ->
+ Context ->
+ Either TypeError (Term, Type, Env, Context)
+-- loadProgram (Let d r) ρ γ = do
+-- (ρ', γ') <- checkD 0 d ρ γ
+-- loadProgram r ρ' γ'
+loadProgram expr env context =
+ let term = desugar expr
+ in case infer term of
+ Left typeError -> Left typeError
+ Right typ ->
+ Right (fromDeBruijn $ eval (toDeBruijn term), typ, env, context)