[Haskell-cafe] Quite confused by simple transformations on this code not working

Andrew Wagner wagner.andrew at gmail.com
Tue Jan 20 23:22:04 EST 2009


So...there's just no good way to avoid the duplication?

On Tue, Jan 20, 2009 at 11:10 PM, wren ng thornton <wren at freegeek.org>wrote:

> Andrew Wagner wrote:
>
>> Strange little bit of code:
>> http://moonpatio.com:8080/fastcgi/hpaste.fcgi/view?id=829#a829
>>
>> If I do any of the following, all of which seem natural to me, it fails to
>> typecheck:
>>
>>   1. move f out of the 'where' clause (with or without a type signature)
>>   2. put the same type signature on f as is on (/\)
>>   3. replace f with (/\) completely
>>
>> What's going on here?
>>
>
>    > :t (nub .) . (++)
>    (nub .) . (++) :: (Eq a) => [a] -> [a] -> [a]
>
>    > :t foldr (map . (nub .) . (++))
>    foldr (map . (nub .) . (++)) :: (Eq a) => [[a]] -> [[a]] -> [[a]]
>
> The type you give to (/\) is more restrictive than the type of the
> expression, and f uses the generality of the expression.
>
> --
> Live well,
> ~wren
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090120/44fe4ac0/attachment.htm


More information about the Haskell-Cafe mailing list