Re: [Haskell-cafe] Type hierarchy

2013-01-16 Thread Kim-Ee Yeoh
On Wed, Jan 16, 2013 at 11:22 PM, Thiago Negri wrote: > The C spec allows the use of GLboolean values where GLenums are expected. > Some fixes off the top of my head (caveats apply): * define a lift :: GLboolean -> GLenum * use a typeclass GLenumlike * if there aren't too many of them, roll a G

Re: [Haskell-cafe] Type hierarchy

2013-01-16 Thread Thiago Negri
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 GLe

Re: [Haskell-cafe] Type hierarchy

2013-01-16 Thread 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 N

[Haskell-cafe] Type hierarchy

2013-01-16 Thread Thiago Negri
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 va