So...there's just no good way to avoid the duplication? On Tue, Jan 20, 2009 at 11:10 PM, wren ng thornton <[email protected]>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 > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
