Hi,
As part of GHC 7.10, some of Applicative will be exported by Prelude,
including the *> operator that Shake uses. Clashing with a Prelude
function is a terrible idea, so Shake really needs to rename its
operator. Currently the operators defined by Shake are:
?== -- pattern match
~> -- phony definition
*> -- wildcard pattern
|*> -- or wildcards
&*> -- and wildcards
?> -- predicate pattern
&?> -- and predicate
In order to make a sensible pick, I created a list of all operators on Hackage:
https://gist.github.com/ndmitchell/aa1e0944379a7429cedb#file-gistfile1-txt
The current clashes with non-deprecated interesting Shake operators are:
(*>) Agata Clean Encode HaskellForMaths SimpleH appar base
basic-prelude blas chalkboard constructive-algebra darcs darcs-beta
data-aviary definitive-base diagrams-lib haxl hx ideas
invertible-syntax iterIO lin-alg monad-lrs numeric-prelude
numeric-quest parsimony plumbers roundtrip shake uu-tc uulib
(?==) quickcheck-assertions shake
(?>) AC-MiniTest HaXml feldspar-language fuzzcheck markov-processes
quickcheck-assertions shake
(|*>) MFlow shake
(~>) moe TypeCompose data-fix derp-lib functor-combo funpat groundhog
hTensor haste-compiler hcube hmt hspec-attoparsec ideas machines pipes
pointless-fun sessions shake tidal
So *> is a problem now. ~> might become a problem, but we're fine for
the moment.
My best guess for an alternative to *> is %>, where &%> and |%> are
entirely unused, and %> clashes with:
(%>) cmdlib llvm-ht nsis traced
Which looks entirely reasonable. I can slightly justify %> because in
Makefile's % is the wildcard symbol.
Anyone any other thoughts or suggestions?
Needless to say, Shake will continue to export *> for a really long
time, but it will be discouraged.
Thanks, Neil