2 import Data.Attoparsec.Text
3 import Control.Applicative
5 data Term = Var String | Lambda Term Term | App Term Term
7 instance Show Term where
9 show (Lambda (Var x) t) = "\\" ++ x ++ "." ++ show t
10 show (App t r) = "(" ++ show t ++ " " ++ show r ++ ")"
12 --instance Read Term where
13 tRead s = case parseOnly (parseTerm <* endOfInput) (T.pack s) of
17 parseVar :: Parser Term
22 parseLambda :: Parser Term
31 parseApp :: Parser Term
40 parseTerm :: Parser Term
41 parseTerm = parseVar <|> parseLambda <|> parseApp