summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/src/Minilang/Lambda/Infer.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/Infer.hs
parent1d1f0efc7de1eaa0c8a6b503892c2f950008fde6 (diff)
downloadlambda-nantes-2a20afb971ef3323955964b1bbb5f75af4ca5fcb.tar.gz
Add server capability
Diffstat (limited to 'lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs')
-rw-r--r--lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs10
1 files changed, 8 insertions, 2 deletions
diff --git a/lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs b/lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs
index 94fecb3..2e1814e 100644
--- a/lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs
+++ b/lambda-calcul/haskell/src/Minilang/Lambda/Infer.hs
@@ -1,13 +1,16 @@
{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE DeriveAnyClass #-}
module Minilang.Lambda.Infer where
import Control.Monad.State (MonadState (..), StateT, evalStateT, modify)
+import Data.Aeson (FromJSON, ToJSON)
import Data.Bifunctor (first)
import Data.Char (chr, ord)
import qualified Data.List as List
import qualified Data.Map as Map
import Data.Text (Text, pack)
+import GHC.Generics (Generic)
import qualified Minilang.Lambda.Eval as Eval
import Minilang.Lambda.Unify (Type (..), UnifyError, apply, unify)
import Prelude hiding (lookup)
@@ -48,8 +51,11 @@ typeOf (Var _ t) = t
typeOf (Lam _ _ t) = t
typeOf (App _ _ t) = t
-data Context = Context {nextVar :: Int, typeContext :: Map.Map Text Type}
- deriving (Eq, Show)
+data Context = Context
+ { nextVar :: Int,
+ typeContext :: Map.Map Text Type
+ }
+ deriving (Eq, Show, Generic, ToJSON, FromJSON)
annotate :: Eval.Term -> Either TypeError (ATerm Type)
annotate t =