Lambda
authorTomas Musil <tomik.musil@gmail.com>
Thu, 23 Oct 2014 01:37:46 +0000 (03:37 +0200)
committerTomas Musil <tomik.musil@gmail.com>
Thu, 23 Oct 2014 01:37:46 +0000 (03:37 +0200)
Lambda.hs [moved from lambda.hs with 77% similarity]

similarity index 77%
rename from lambda.hs
rename to Lambda.hs
index 356412d..d9bdaee 100644 (file)
--- a/lambda.hs
+++ b/Lambda.hs
@@ -1,15 +1,19 @@
+module Lambda where
+
 import Data.Text as T
 import Data.Attoparsec.Text
 import Control.Applicative
 
-data Term = Var String | Lambda Term Term | App Term Term
+type VarName = String
+data Term = Var VarName | Lambda VarName Term | App Term Term
 
 instance Show Term where
   show (Var x) = x
-  show (Lambda (Var x) t) = "\\" ++ x ++ "." ++ show t
+  show (Lambda x t) = "\\" ++ x ++ "." ++ show t
   show (App t r) = "(" ++ show t ++ " " ++ show r ++ ")"
 
 --instance Read Term where
+tRead :: String -> Term
 tRead s = case parseOnly (parseTerm <* endOfInput) (T.pack s) of
     (Right t) -> t
     (Left e) -> error e
@@ -22,12 +26,11 @@ parseVar = do
 parseLambda :: Parser Term
 parseLambda = do
   char '\\'
-  x <- parseVar
+  (Var x) <- parseVar
   char '.'
   t <- parseTerm
   return $! Lambda x t
 
-
 parseApp :: Parser Term
 parseApp = do
   char '('