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