From 6727fbc1a45f65436348bc2784ebb9c61b33f830 Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Sun, 2 Nov 2025 21:51:06 +0100 Subject: allow to run untyped evaluator --- lambda-calcul/haskell/src/Minilang/REPL/Run.hs | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'lambda-calcul/haskell/src/Minilang/REPL/Run.hs') diff --git a/lambda-calcul/haskell/src/Minilang/REPL/Run.hs b/lambda-calcul/haskell/src/Minilang/REPL/Run.hs index 9c31987..2282b46 100644 --- a/lambda-calcul/haskell/src/Minilang/REPL/Run.hs +++ b/lambda-calcul/haskell/src/Minilang/REPL/Run.hs @@ -14,9 +14,10 @@ import Minilang.Lambda (loadProgram) import Minilang.Lambda.DeBruijn (eval, fromDeBruijn, toDeBruijn) import Minilang.Lambda.Eval (newEnv) import Minilang.Lambda.Infer (infer, newContext) +import qualified Minilang.Lambda.Infer as Infer import Minilang.Lambda.Parser (desugar, parse) +import Minilang.Lambda.Unify (Type (TyVar)) import Minilang.REPL.Types -import qualified Minilang.Lambda.Infer as Infer -- | Run a REPL session runREPL :: @@ -36,16 +37,21 @@ handleUserInput :: Text -> m () handleUserInput txt = do - -- repl@REPLEnv {env, context, debugParser} <- getEnv + REPLEnv {language} <- getEnv case parse txt of Left err -> output (Msg $ pack $ show err) Right expr -> do let term = desugar expr - case infer term of - Left typeError -> output (Msg $ Infer.render typeError) - Right typ -> do - let v = fromDeBruijn $ eval (toDeBruijn term) - output (Evaluated v typ) + v = fromDeBruijn $ eval (toDeBruijn term) + case language of + Typed -> + case infer term of + Left typeError -> output (Msg $ Infer.render typeError) + Right typ -> do + let + output (Evaluated v typ) + Untyped -> + output (Evaluated v (TyVar "")) handleCommand :: (MonadCatch m, MonadREPL m) => @@ -63,6 +69,7 @@ handleCommand (Load (File file)) = do handleCommand (Load (Data prog)) = loadProgramInEnv prog handleCommand (Set (StepTypeChecker st)) = getEnv >>= \e -> setEnv (e {stepTypeCheck = st}) handleCommand (Set (DebugParser st)) = getEnv >>= \e -> setEnv (e {debugParser = st}) +handleCommand (Set (SelectLanguage lang)) = getEnv >>= \e -> setEnv (e {language = lang}) handleCommand Help = output (Msg helpText) -- cgit v1.3.1