On Sat, Dec 27, 2008 at 12:44 PM, David Menendez <dave@zednenem.com> wrote:
On Sat, Dec 27, 2008 at 2:24 PM, Andrew Wagner <wagner.andrew@gmail.com> wrote:
> I'm sure there's a way to do this, but it's escaping me at present. I want
> to do something like this:
>
> data Foo = Bar a => Foo a Bool ...
>
> That is, I want to create a new type, Foo, whose constructor takes both a
> Boolean and a value of a type of class Bar.

Try this:

   {-# LANGUAGE ExistentialQuantification #-}

   data Foo = forall a. Bar a => Foo a Bool

Though for existentials, I find GADT more natural (actually I find GADT more natural in most cases):

  data Foo where
      Foo :: Bar a => a -> Foo
 
Luke