{-# OPTIONS -Wall #-} module Lambda where import Data.Char import Data.Map.Strict (Map) import qualified Data.Map.Strict as Map import Text.Show.Functions () data Token = DefineYourTokenConstructorsHere deriving (Show) lexer :: String -> [Token] lexer = error "implement me" data Expr = DefineYourExprConstructorsHere deriving (Show) parser :: [Token] -> Expr parser = error "implement me" data Value = VInt Int | VFun (Value -> Value) deriving (Show) eval :: Expr -> Value eval = error "implement me using eval'" eval' :: Map String Value -> Expr -> Value eval' = error "implement me" interpret :: String -> Value interpret = error "implement me"