[Haskell-beginners] Confused by type constraints

Guy guytsalmaves-h at yahoo.com
Tue Jun 7 10:51:00 CEST 2011


On 06/06/2011 17:31, Daniel Schoepe wrote:
> On Sun, 05 Jun 2011 19:53:50 +0300, Guy<guytsalmaves-h at yahoo.com>  wrote:
>> So in my original example, why isn't "instance Foo (Bar f)" destructing Bar - and making the constraint available?
>
> The "Bar" in "instance Foo (Bar f)" is a type constructor, not a data
> constructor like the X in "s (X x)". Hence "instance Foo (Bar f)" isn't
> really deconstructing anything, but applying the type constructor Bar to
> f, whereas "s (X x)" matches a _value_ of type X.
>
> This might be a bit clearer if you name type and data constructors
> differently, e.g.:
>
> data Bar f a = Foo f =>  MkBar { bar :: f a }
>
> Cheers,
> Daniel

Thanks, I (think I) understand your explanation, but ... why can't GHC infer that Bar must always be a Show, seeing as 
this is the only constructor?




More information about the Beginners mailing list