Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Copilot.Core.Expr
Synopsis
- type Id = Int
- type Name = String
- data Expr a where
- Const :: Typeable a => Type a -> a -> Expr a
- Drop :: Typeable a => Type a -> DropIdx -> Id -> Expr a
- Local :: Typeable a => Type a -> Type b -> Name -> Expr a -> Expr b -> Expr b
- Var :: Typeable a => Type a -> Name -> Expr a
- ExternVar :: Typeable a => Type a -> Name -> Maybe [a] -> Expr a
- ExternFun :: Typeable a => Type a -> Name -> [UExpr] -> Maybe (Expr a) -> Maybe Tag -> Expr a
- Op1 :: Typeable a => Op1 a b -> Expr a -> Expr b
- Op2 :: (Typeable a, Typeable b) => Op2 a b c -> Expr a -> Expr b -> Expr c
- Op3 :: (Typeable a, Typeable b, Typeable c) => Op3 a b c d -> Expr a -> Expr b -> Expr c -> Expr d
- Label :: Typeable a => Type a -> String -> Expr a -> Expr a
- data UExpr = Typeable a => UExpr {}
- type DropIdx = Word32
- type Tag = Int
Documentation
Constructors
Const :: Typeable a => Type a -> a -> Expr a | |
Drop :: Typeable a => Type a -> DropIdx -> Id -> Expr a | |
Local :: Typeable a => Type a -> Type b -> Name -> Expr a -> Expr b -> Expr b | |
Var :: Typeable a => Type a -> Name -> Expr a | |
ExternVar :: Typeable a => Type a -> Name -> Maybe [a] -> Expr a | |
ExternFun :: Typeable a => Type a -> Name -> [UExpr] -> Maybe (Expr a) -> Maybe Tag -> Expr a | |
Op1 :: Typeable a => Op1 a b -> Expr a -> Expr b | |
Op2 :: (Typeable a, Typeable b) => Op2 a b c -> Expr a -> Expr b -> Expr c | |
Op3 :: (Typeable a, Typeable b, Typeable c) => Op3 a b c d -> Expr a -> Expr b -> Expr c -> Expr d | |
Label :: Typeable a => Type a -> String -> Expr a -> Expr a |
A untyped expression (no phantom type).