Narc.AST
- data Term' a
- = Unit
- | Bool Bool
- | Num Integer
- | String String
- | PrimApp String [Term a]
- | Var Var
- | Abs Var (Term a)
- | App (Term a) (Term a)
- | Table Tabname [(Field, Type)]
- | If (Term a) (Term a) (Term a)
- | Singleton (Term a)
- | Nil
- | Union (Term a) (Term a)
- | Record [(String, Term a)]
- | Project (Term a) String
- | Comp Var (Term a) (Term a)
- type Term a = (Term' a, a)
- type Var = String
- type PlainTerm = Term ()
- type TypedTerm = Term Type
- fvs :: (Term' t, t) -> [Var]
- substTerm :: Var -> Term t -> Term t -> Term t
- strip :: Term a -> Term ()
- retagulate :: (Term a -> a) -> Term a -> Term a
- rename :: Var -> Var -> (Term' a, a) -> (Term' a, a)
- variables :: [[Char]]
- (!) :: t -> (t, ())
- unit_ :: (Term' a, ())
- class Const a where
- primApp_ :: String -> [Term a] -> (Term' a, ())
- var_ :: Var -> (Term' a, ())
- abs_ :: Var -> Term a -> (Term' a, ())
- app_ :: Term a -> Term a -> (Term' a, ())
- table_ :: Tabname -> [(Field, Type)] -> (Term' a, ())
- ifthenelse_ :: Term a -> Term a -> Term a -> (Term' a, ())
- singleton_ :: Term a -> (Term' a, ())
- nil_ :: (Term' a, ())
- union_ :: Term a -> Term a -> (Term' a, ())
- record_ :: [(String, Term a)] -> (Term' a, ())
- project_ :: Term a -> String -> (Term' a, ())
- foreach_ :: Term a -> Var -> Term a -> (Term' a, ())
Documentation
Terms in the nested relational calculus (represented concretely | with named variables)
Constructors
| Unit | |
| Bool Bool | |
| Num Integer | |
| String String | |
| PrimApp String [Term a] | |
| Var Var | |
| Abs Var (Term a) | |
| App (Term a) (Term a) | |
| Table Tabname [(Field, Type)] | |
| If (Term a) (Term a) (Term a) | |
| Singleton (Term a) | |
| Nil | |
| Union (Term a) (Term a) | |
| Record [(String, Term a)] | |
| Project (Term a) String | |
| Comp Var (Term a) (Term a) |
type Term a = (Term' a, a)Source
Terms whose every subexpression is annotated with a value of some | particular type.
substTerm :: Var -> Term t -> Term t -> Term tSource
substTerm x v m: substite v for x in term m (Actually incorrect because it does not make substitutions in the q.)
retagulate :: (Term a -> a) -> Term a -> Term aSource
singleton_ :: Term a -> (Term' a, ())Source