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.