Inductive types in functional programming. - Allan Grimley (1990)