k...@cas.mcmaster.ca wrote:

which in my opinion only asks for extension of the backquote symtax to
arbitrary epressions, like

  `zipWith (+)`

. I frequently run into situations where that would be extremely useful.

What is the fixity and associativity of this infix "operator"? For that matter, in a let expression

  let (+++++) = (+) in 5 * 2 +++++ 3 - 2

what is the fixity and associativity of (+++++)? Does it inherit these from (+) by virtue of let? If not, then the obvious local workaround of

  let (>>=) = Prelude.(>>=) in ....  >>=  ...

would not be a drop-in lexical substitution.

The QualifiedOperators page also says:

 | You might argue that it is inconsistent to allow `(+)` but not allow
 | (`plus`), but the justification is simply that (..) and `..` are not
 | dual in this design.

I would indeed argue that they should be dual.

So lexically, given an opening `, is the closing ` the first one enclosing balanced parentheses?

  2 `(`(`(`(+)`)`)`)` 3 == 5

Back to the original argument:

 > Prelude.>>= just doesn't look like an infix operator.

I think that

  `Prelude.(>>=)`

doesn't really look like an infix operator either.

Wouldn't it be much cleaner to outlaw all qualified operators in lieu of a top-level import:

  import Prelude((>>=) as (>>>=), fst as myFst)

leaving fixity and associativity of operators intact unless overridden:

  import Prelude((+) as (++++))  -- assumes infixl 6 as in Prelude
  infixr 3 ++++                  -- but for this file I will change it

Dan


_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to