module Language.Lambda ( LambdaExpr(..), PrettyPrint(..), evalExpr, evalString, parseExpr, uniques, ) where import Control.Monad import Text.Parsec import Language.Lambda.Eval import Language.Lambda.Expression import Language.Lambda.Parser import Language.Lambda.PrettyPrint evalString :: String -> Either ParseError (LambdaExpr String) evalString = liftM (evalExpr uniques) . parseExpr -- TODO[sgillespie]: Uniques should be [a..z, a0..z0, a1..z1] etc -- concatMap (\x -> map (\y -> y:x) ['a'..'z']) ([""] ++ map show [0..]) uniques :: [String] uniques = concatMap (\p -> map (:p) . reverse $ ['a'..'z']) suffix where suffix = [""] ++ map show [(0::Int)..]