•We would like the parameter of a type constructor (e.g. the “a” in “T a”) to say something about the values with
type “T a”
–phantom types
–indexed types
•
•Imagine a type-indexed Term datatype
•
–Int :: Int -> Term Int
–Bool :: Bool -> Term Bool
–Plus :: Term Int -> Term Int -> Term Int
–Less :: Term Int -> Term Int -> Term Bool
–If :: Term Bool -> Term a -> Term a -> Term a