[Haskell-cafe] Re: Newcomers question
b1g3ar5
nick.straw at gmail.com
Sun Nov 1 11:09:14 EST 2009
OK, I understand that now but I've got a supplimentary question.
If I put:
instance Eq b => Eq (a -> b) where
(==) = liftA2 (Prelude.==)
to do the Eq part I get another error:
Couldn't match expected type `Bool'
against inferred type `a -> Bool'
In the expression: liftA2 (==)
In the definition of `==': == = liftA2 (==)
In the instance declaration for `Eq (a -> b)'
Now can someone please explain this?
I'm hoping that when I've understood this stuff I'll have made a small
step to understanding Haskell.
Thanks.
On 31 Oct, 23:38, Daniel Peebles <pumpkin... at gmail.com> wrote:
> For some reason, Show and Eq are superclasses of Num (despite Num not
> actually using any of their methods), meaning that the compiler forces
> you to write instances of Eq and Show before it even lets you write a
> Num instance. I don't think anybody likes this, but I think we're
> stuck with it for the foreseeable future.
>
>
>
> On Sat, Oct 31, 2009 at 7:31 PM, b1g3ar5 <nick.st... at gmail.com> wrote:
> > I'm trying:
>
> > instance Num b => Num (a -> b) where
> > fromInteger = pure . Prelude.fromInteger
> > negate = fmap Prelude.negate
> > (+) = liftA2 (Prelude.+)
> > (*) = liftA2 (Prelude.*)
> > abs = fmap Prelude.abs
> > signum = fmap Prelude.signum
>
> > but the compiler rejects it with:
>
> > src\Main.hs:24:9:
> > Could not deduce (Show (a -> b), Eq (a -> b))
> > from the context (Num b)
> > arising from the superclasses of an instance declaration
> > at src\Main.hs:24:9-29
> > Possible fix:
> > add (Show (a -> b), Eq (a -> b)) to the context of
> > the instance declaration
> > or add an instance declaration for (Show (a -> b), Eq (a -> b))
> > In the instance declaration for `Num (a -> b)'
>
> > Could someone please explain this to me?
>
> > I thought that it might be that it couldn't work out the functions
> > necessary for (a->b) to be in the classes Show and Eq - so I tried
> > adding definitions for == ans show, but it made no difference.
>
> > Thanks
>
> > _______________________________________________
> > Haskell-Cafe mailing list
> > Haskell-C... at haskell.org
> >http://www.haskell.org/mailman/listinfo/haskell-cafe
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-C... at haskell.orghttp://www.haskell.org/mailman/listinfo/haskell-cafe
More information about the Haskell-Cafe
mailing list