- Anyone can define their own operators and set their precedence.
- Any operator can be made into a normal prefix function by putting parens around it. x + y = (+) x y
- Any function can be made into an infix operator by putting backquotes around it. mod x y = x `mod` y.
Sure you get a lot of people defining goofy operators: |||, .&., >>>, etc, but there are good API search engines ( http://www.haskell.org/hoogle/ , http://holumbus.fh-wedel.de/hayoo/hayoo.html ) that will look these things up for you. They're just functions with funny names. A good API will not abuse this ability, but it can come in handy. If you're going to have infix operators at all I think this is the most elegant way to do it. Having just a few special operators is a kludge, better to go whole hog like Haskell or not at all like Lisp.