Example
•
Data
Tree a
•
= Fork (Tree a) (Tree a)
•
| Node a
•
| Tip
•
•
Fork :: Tree a -> Tree a ->
Tree a
•
Node :: a ->
Tree a
•
Tip ::
Tree a
Restriction:
the range
of every constructor
matches exactly the
type being defined