[Haskell-cafe] Type hierarchy

Felipe Almeida Lessa felipe.lessa at gmail.com
Wed Jan 16 16:57:02 CET 2013


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.



More information about the Haskell-Cafe mailing list