[Haskell-cafe] A type class puzzle
Arie Peterson
ariep at xs4all.nl
Tue Oct 31 15:53:15 EST 2006
Greg Buchholz wrote:
> ...That first article is the strangest. I couldn't reconcile the fact
> that if our type signature specifies two arguments, we can pattern
> match on three arguments in the function definition. Compare the number
> of arguments in the first and second instances...
>
>> class BuildList a r | r-> a where
>> build' :: [a] -> a -> r
>>
>> instance BuildList a [a] where
>> build' l x = reverse$ x:l
>>
>> instance BuildList a r => BuildList a (a->r) where
>> build' l x y = build'(x:l) y
I'm not sure I'm getting your point, but this is just because in the
second instance, the second parameter of BuildList is 'a -> r', so the
specific type of 'build\'' is '[a] -> a -> (a -> r)' which is just '[a] ->
a -> a -> r' (currying at work).
Regards,
Arie
More information about the Haskell-Cafe
mailing list