Name collisions are always an issue, and I think you raise a valid point. However, in this case, does Haskell not already offer a solution? Qualified imports do add some overhead, but doing
```
import qualified Control.Arrow as A
import qualified Data.Bifunctor as B
foo :: Foo
foo = f . A.first . g
baz :: Baz
baz = h . B.first . i
```
does not seem too difficult.
I had to import both Control.Arrow and Data.Bifunctor, and the name collision is annoying.
`first` and `second` from Data.Bifunctor should be given other names. I suggest (<$<) and (>$>), respectively.
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries