Fixity declarations

Wolfgang Lux wlux@uni-muenster.de
Thu, 12 Jul 2001 18:26:18 +0200


Koen Claessen wrote

> However, it is not possible to define the fixity of an
> operator which is an argument to a function. If I define:
> 
>   foldr4 :: (a -> b -> b) -> b -> (a,a,a,a) -> b
>   foldr4 (#) z (a,b,c,d) = a # b # c # d # z
> 
> I will have to put in parentheses explicitly, because it is
> not possible to define the fixity of that entity (namely the
> argument (#) to foldr4).
> 
> In this case, (#) gets the default fixity, namely infixl 9.
> 
> Apart from the fact if we want to allow this or not, I think
> the report should be clear about that it is not possible to
> define the fixities of locally bound operator names in this
> way.

Hmmm, unless I overlooked something your example is syntacally not 
valid by the grammar given in appendix B.4 of the Haskell 98 report.
Operators in patterns can be used only with an infix syntax.

Wolfgang


--
Wolfgang Lux				  Phone: +49-251-83-38263
Institut fuer Wirtschaftinformatik	    FAX: +49-251-83-38259
Universitaet Muenster		      Email: wlux@uni-muenster.de