Proposal: change to qualified operator syntax
Dan Weston
westondan at imageworks.com
Thu Jul 9 00:26:21 EDT 2009
kahl at 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
More information about the Haskell-prime
mailing list