[Haskell-cafe] Type hierarchy

Thiago Negri evohunz at gmail.com
Wed Jan 16 17:22:12 CET 2013


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 <felipe.lessa at gmail.com>

> 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 <evohunz at gmail.com> 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 at haskell.org
> > http://www.haskell.org/mailman/listinfo/haskell-cafe
> >
>
>
>
> --
> Felipe.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130116/06c4cbf4/attachment.htm>


More information about the Haskell-Cafe mailing list