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 <[email protected]> > 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 <[email protected]> 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 > > [email protected] > > http://www.haskell.org/mailman/listinfo/haskell-cafe > > > > > > -- > Felipe. >
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
