Everything related to typed core
- type Ident = String
- type Identifier = String
- data Const
- data Op where
- data CoreExpr where
- BinOp :: Qual FType -> Op -> CoreExpr -> CoreExpr -> CoreExpr
- Constant :: Qual FType -> Const -> CoreExpr
- Var :: Qual FType -> String -> CoreExpr
- App :: Qual FType -> CoreExpr -> Param -> CoreExpr
- Let :: Qual FType -> String -> CoreExpr -> CoreExpr -> CoreExpr
- Rec :: Qual FType -> [RecElem] -> CoreExpr
- Cons :: Qual FType -> CoreExpr -> CoreExpr -> CoreExpr
- Nil :: Qual FType -> CoreExpr
- Elem :: Qual FType -> CoreExpr -> String -> CoreExpr
- Table :: Qual FType -> String -> [Column] -> [Key] -> CoreExpr
- If :: Qual FType -> CoreExpr -> CoreExpr -> CoreExpr -> CoreExpr
- data RecElem where
- data Param where
- data Column where
- data Key where
- int :: FType
- float :: FType
- string :: FType
- bool :: FType
- list :: FType -> FType
- var :: Ident -> FType
- rec :: [(RLabel, FType)] -> FType
- fn :: FType -> FType -> FType
- genT :: Int -> FType
- (.->) :: FType -> FType -> FType
- data TyScheme where
- data Qual t where
- data Pred
- data FType where
- data RLabel where
- data FTFn where
- class HasType a where
- class Dotify a where
- dot :: a -> Either FerryError String
Documentation
type Identifier = StringSource
Identifiers are represented as strings
Constant values
BinOp :: Qual FType -> Op -> CoreExpr -> CoreExpr -> CoreExpr | |
Constant :: Qual FType -> Const -> CoreExpr | |
Var :: Qual FType -> String -> CoreExpr | |
App :: Qual FType -> CoreExpr -> Param -> CoreExpr | |
Let :: Qual FType -> String -> CoreExpr -> CoreExpr -> CoreExpr | |
Rec :: Qual FType -> [RecElem] -> CoreExpr | |
Cons :: Qual FType -> CoreExpr -> CoreExpr -> CoreExpr | |
Nil :: Qual FType -> CoreExpr | |
Elem :: Qual FType -> CoreExpr -> String -> CoreExpr | |
Table :: Qual FType -> String -> [Column] -> [Key] -> CoreExpr | |
If :: Qual FType -> CoreExpr -> CoreExpr -> CoreExpr -> CoreExpr |
A type scheme represents a quantified type
A qualified type is a type with some predicates ([predicates] :=> type)
Predicates relating to records
Type language
Language for record labels
Everything that contains a type.