-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A lambda calculus interpreter -- -- Please see README.md @package lambda-calculator @version 0.5.0 module Language.Lambda.PrettyPrint class PrettyPrint a prettyPrint :: PrettyPrint a => a -> String newtype PDoc s PDoc :: [s] -> PDoc s empty :: PDoc s add :: s -> PDoc s -> PDoc s append :: [s] -> PDoc s -> PDoc s between :: PDoc s -> s -> s -> PDoc s -> PDoc s betweenParens :: PDoc String -> PDoc String -> PDoc String intercalate :: [[s]] -> [s] -> PDoc [s] -> PDoc [s] addSpace :: PDoc String -> PDoc String space :: Char lambda :: Char instance GHC.Show.Show s => GHC.Show.Show (Language.Lambda.PrettyPrint.PDoc s) instance GHC.Classes.Eq s => GHC.Classes.Eq (Language.Lambda.PrettyPrint.PDoc s) instance Language.Lambda.PrettyPrint.PrettyPrint GHC.Base.String instance Language.Lambda.PrettyPrint.PrettyPrint s => Language.Lambda.PrettyPrint.PrettyPrint (Language.Lambda.PrettyPrint.PDoc s) instance GHC.Base.Monoid (Language.Lambda.PrettyPrint.PDoc s) instance GHC.Base.Functor Language.Lambda.PrettyPrint.PDoc module Language.Lambda.Expression data LambdaExpr name Var :: name -> LambdaExpr name App :: (LambdaExpr name) -> (LambdaExpr name) -> LambdaExpr name Abs :: name -> (LambdaExpr name) -> LambdaExpr name pprExpr :: PrettyPrint n => PDoc String -> LambdaExpr n -> PDoc String pprAbs :: PrettyPrint n => PDoc String -> n -> LambdaExpr n -> PDoc String pprApp :: PrettyPrint n => PDoc String -> LambdaExpr n -> LambdaExpr n -> PDoc String uncurry :: n -> LambdaExpr n -> ([n], LambdaExpr n) instance GHC.Show.Show name => GHC.Show.Show (Language.Lambda.Expression.LambdaExpr name) instance GHC.Classes.Eq name => GHC.Classes.Eq (Language.Lambda.Expression.LambdaExpr name) instance Language.Lambda.PrettyPrint.PrettyPrint a => Language.Lambda.PrettyPrint.PrettyPrint (Language.Lambda.Expression.LambdaExpr a) module Language.Lambda.Parser parseExpr :: String -> Either ParseError (LambdaExpr String) module Language.Lambda.Eval evalExpr :: Eq n => [n] -> LambdaExpr n -> LambdaExpr n betaReduce :: Eq n => [n] -> LambdaExpr n -> LambdaExpr n -> LambdaExpr n alphaConvert :: Eq n => [n] -> [n] -> LambdaExpr n -> LambdaExpr n sub :: Eq n => n -> LambdaExpr n -> LambdaExpr n -> LambdaExpr n freeVarsOf :: Eq n => LambdaExpr n -> [n] module Language.Lambda data LambdaExpr name Var :: name -> LambdaExpr name App :: (LambdaExpr name) -> (LambdaExpr name) -> LambdaExpr name Abs :: name -> (LambdaExpr name) -> LambdaExpr name class PrettyPrint a prettyPrint :: PrettyPrint a => a -> String evalExpr :: Eq n => [n] -> LambdaExpr n -> LambdaExpr n evalString :: String -> Either ParseError (LambdaExpr String) parseExpr :: String -> Either ParseError (LambdaExpr String) uniques :: [String]