diff options
| author | Arnaud Bailly <arnaud@pankzsoft.com> | 2026-03-22 16:05:42 +0100 |
|---|---|---|
| committer | Arnaud Bailly <arnaud@pankzsoft.com> | 2026-03-22 16:05:42 +0100 |
| commit | a1e0b0e5071f851c865ae567de7a28014a1eafc4 (patch) | |
| tree | 93caa8cb5803566b1fa5792ac230b5a1974db7e0 /lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs | |
| parent | 4fed459d89b6b3abcce8028b19af806b48a38bd7 (diff) | |
| download | lambda-nantes-a1e0b0e5071f851c865ae567de7a28014a1eafc4.tar.gz | |
Add strings handling
Diffstat (limited to 'lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs')
| -rw-r--r-- | lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs b/lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs index 2052398..9f0df35 100644 --- a/lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs +++ b/lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs @@ -30,9 +30,14 @@ render :: TypeError -> Text render (UnifyError ue) = Unify.render ue fromTerm :: Eval.Term -> ATerm () -fromTerm (Eval.Var x) = Var x () +fromTerm (Eval.Var x) = Var x () fromTerm (Eval.Lam x body) = Lam x (fromTerm body) () -fromTerm (Eval.App a b) = App (fromTerm a) (fromTerm b) () +fromTerm (Eval.App a b) = App (fromTerm a) (fromTerm b) () +-- Literal values (Num, Str) are treated as typed by a fresh variable; +-- the inferencer only needs to traverse the term structure, not inspect +-- literal payloads. +fromTerm (Eval.Num _) = Var "<num>" () +fromTerm (Eval.Str _) = Var "<str>" () infer :: Eval.Term -> Either TypeError Type infer t = do |
