GHC.LJT
Description
An implementation of LJT proof search directly on Core terms.
ljt :: Type -> [CoreExpr] Source #
(==>) :: [Id] -> Type -> [CoreExpr] Source #
newVar :: Type -> Id Source #
lam :: Type -> (Id -> CoreExpr) -> CoreExpr Source #
lamA :: Applicative f => Type -> (Id -> f CoreExpr) -> f CoreExpr Source #
let_ :: CoreExpr -> (Id -> CoreExpr) -> CoreExpr Source #
letA :: Applicative f => CoreExpr -> (Id -> f CoreExpr) -> f CoreExpr Source #
letsA :: Applicative f => [CoreExpr] -> ([Id] -> f CoreExpr) -> f CoreExpr Source #
isProdType :: Type -> Maybe ([Type], [CoreExpr] -> CoreExpr, CoreExpr -> [Id] -> CoreExpr -> CoreExpr) Source #
isSumType :: Type -> Maybe ([Type], [CoreExpr -> CoreExpr], CoreExpr -> [Id] -> [CoreExpr] -> CoreExpr) Source #
isRecTyCon :: TyCon -> Bool Source #
wrapNewTypeBody :: TyCon -> [Type] -> CoreExpr -> CoreExpr Source #
funLeft :: (Type -> Maybe a) -> Type -> Maybe (a, Type) Source #
anyA :: (Type -> Maybe a) -> [Id] -> Maybe ((Id, a), [Id]) Source #