From 2a20afb971ef3323955964b1bbb5f75af4ca5fcb Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Sat, 1 Nov 2025 17:45:25 +0100 Subject: Add server capability --- lambda-calcul/haskell/src/Minilang/Lambda.hs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lambda-calcul/haskell/src/Minilang/Lambda.hs (limited to 'lambda-calcul/haskell/src/Minilang/Lambda.hs') 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) -- cgit v1.3.1