Ben Millwood wrote:
On Fri, Jul 30, 2010 at 7:50 PM, Gregory Crosswhite
<[email protected]> wrote:
The reason why this definition never actually appears is because it defines the 
constructors using operators rather than names, which is not allowed in vanilla 
Haskell.  (There is an extension, TypeOperators, however, that does allow this.)


 Nope: see Data.Complex.Complex; only infix *type* constructors are
nonstandard. The thing about lists that makes them impossible to
define in normal Haskell is the [a] syntax, which is some kind of
"outfix" type constructor, which no amount of currently available
extensions will allow.

It's normally called "confix" or "circumfix".

Similarly, the tuple syntaxes can't be defined in Haskell because they use "mixfix" notation (which apparently some folks call "distfix"[1]). Also, lists support a mixfix sugar where [a,b,...,c] = a:b:...:c:[]

Agda does support full mixfix notation. While it's nice in theory, when combined with the verbosity of dependently typed languages it gets illegible pretty quickly for the uninitiated.


[1] http://github.com/noteed/syntactical

--
Live well,
~wren
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to