Homomorphic type casting of algebraic data types through partial-α-equivalence