
16 Jan
2013
16 Jan
'13
3:03 p.m.
Hello. How do I achieve type hierarchy in Haskell? Suppose we have the following code: foo :: A -> C bar :: B -> C I want something that allow me to say that B is a subtype of A, meaning: 1. I can use a value of type A where a value of type A is needed. 2. I can use a value of type B where a value of type B is needed. 3. I can use a value of type B where a value of type A is needed. 4. I can't use a value of type A where a value of type B is needed. What are my options? I've thought in type classes and data types with an attribute representing the extension. Any other way to do this? Thanks, Thiago.