summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/src/Minilang/Lambda/Eval.hs
blob: 7f7aad7ea2dd122fc23d895b9f2bef25d8f842ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{-# LANGUAGE DeriveAnyClass #-}

module Minilang.Lambda.Eval where

import Data.Aeson (FromJSON, ToJSON)
import Data.Text (Text)
import GHC.Generics (Generic)

data Term
  = Var Text
  | Lam Text Term
  | App Term Term
  deriving (Show, Read, Eq, Generic, ToJSON, FromJSON)

type Env = [(Text, Term)]

newEnv :: Env
newEnv = []

-- call-by-value evaluator
eval :: Term -> Env -> Term
eval = undefined

evalNeed :: Term -> Env -> Term
evalNeed = undefined