[Haskell-cafe] Typeclass question

David Menendez dave at zednenem.com
Sat Dec 27 17:11:36 EST 2008

On Sat, Dec 27, 2008 at 3:09 PM, Andrew Wagner <wagner.andrew at gmail.com> wrote:
> Hmm, I actually simplified my problem too much. What I actually want is:
> data Foo a = forall a. Bar a => Foo a Bool
> ...except I want the 'a' on the left to match the 'a' on the right, so that
> you can only construct values out of values of the parameterized type, which
> also must be of the Bar class.

Something like this?

    {-# LANGUAGE ExistentialQuantification #-}

    class Bar a where
        bar :: a -> a

    data Foo a = (Bar a) => Foo a Bool

    baz :: Foo a -> a
    baz (Foo a _) = bar a

This works fine for me with GHC 6.8, but I'd expect Hugs and earlier
versions of GHC to reject it.

See section 8.4.5 of the GHC manual.

Dave Menendez <dave at zednenem.com>

More information about the Haskell-Cafe mailing list