parameterized inductive data types