
Thanks for the answer, but I'm trying to avoid type classes.
By the way, I'm not trying to embed OO into Haskell.
I'm trying to solve this issue:
https://github.com/haskell-opengl/OpenGLRaw/issues/15
The binding to OpenGL declares GLenum as CUInt and GLboolean as CUChar,
meaning I can't use a GLenum as a GLboolean or vice-versa.
The C spec allows the use of GLboolean values where GLenums are expected.
Maybe I'm taking the wrong approach...
2013/1/16 Felipe Almeida Lessa
For your particular constraints, it can be as easy as:
class IsA a where toA :: a -> A
foo' :: IsA a => a -> C foo' = foo . toA
However, you may asking the wrong question since it smells like you're trying to embed OO into Haskell =).
Cheers,
On Wed, Jan 16, 2013 at 1:03 PM, Thiago Negri
wrote: 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.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Felipe.