[Haskell-cafe] Re: Typeclass question
Jake McArthur
jake at pikewerks.com
Sat Dec 27 15:54:51 EST 2008
Tom Pledger wrote:
> Andrew Wagner <wagner.andrew <at> gmail.com> writes:
>
>> 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.
>
>
> Sometimes it's enough to declare
>
> data Foo a = Foo a Bool
>
> and to put the 'Bar a =>' context onto the functions and instances that
> involve Foo.
Although, if you really want to omit the `a` from the type, you can use
the ExistentialQuantification extension or GADTs to do something like:
-- with ExistentialQuantification
data Foo = forall a . Bar a => Foo a Bool
-- with GADTs
data Foo where
forall a . Bar a => Foo a Bool
I haven't used either extension in a few months though, so I may have
gotten the syntax wrong. You can look them up to be sure.
- Jake
More information about the Haskell-Cafe
mailing list