On Wed, Jan 18, 2012 at 02:27:21PM +0000, Simon Peyton-Jones wrote: > Dear GHC users > > As part of beefing up the kind system, we plan to implement the "Type > operators" proposal for Haskell Prime > http://hackage.haskell.org/trac/haskell-prime/wiki/InfixTypeConstructors > > GHC has had type operators for some kind, so you can say > data a :+: b = Left a | Right b > but you can only do that for operators which start with ":". > > As part of the above wiki page you can see the proposal to broaden this to > ALL operators, allowing > data a + b = Left a | Right b > > Although this technically inconsistent the value page (as the wiki page > discussed), I think the payoff is huge. (And "A foolish consistency is the > hobgoblin of little minds", Emerson) > > > This email is (a) to highlight the plan, and (b) to ask about flags. > Our preferred approach is to *change* what -XTypeOperators does, to > allow type operators that do not start with :. But that will mean > that *some* (strange) programs will stop working. The only example I > have seen in tc192 of GHC's test suite
This is not actually that strange. Lots of code that works with arrows uses type variables like (~>) or similar, and to have to change to (b `arr` c) instead of (b ~> c) would be annoying. For example, check out the 'netwire' package: http://hackage.haskell.org/packages/archive/netwire/3.1.0/doc/html/Control-Wire-Types.html I'm not sure at this point which way I would lean on the issue. Having infix type constructors that don't have to start with : is something I would like, too. But I just thought I would point out that code like tc192 is not as esoteric as you seem to think. I do agree, however, that letting things like (~>) be EITHER type constructors OR type variables depending on what is in scope is out of the question: it's non-compositional and makes the parser's job quite difficult. -Brent _______________________________________________ Glasgow-haskell-users mailing list [email protected] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
