Inconsistent notations for Haskell-like partially applied operators
We currently have notations like:
Notation "( m !!)" := (λ i, m !! i) (only parsing) : stdpp_scope.
Notation "(!! i )" := (lookup i) (only parsing) : stdpp_scope.
Notation "( X ##.)" := (disjoint X) (only parsing) : stdpp_scope.
Notation "(.## X )" := (λ Y, Y ## X) (only parsing) : stdpp_scope.
Some of these notations include a period, and some don't. I think at some point I started to include the period because I ran into some parsing ambiguities, so I think we should do that for all such notations.
@wmansky confirmed this problem. When combining VST and std++ the (!! i )
notation causes problems, because VST uses !!
also as a prefix notation.
I don't think it's strange to use a notation as both an infix and prefix, the most common example is negation -
. So IMHO we should fix this.
I think the impact of the proposed change is relatively small: a.) these notations are hardly used b.) most of them can easily be ported using a sed
script.
Edited by Robbert Krebbers