Operator precedence help

Henning Thielemann lemming at henning-thielemann.de
Sun Aug 16 05:03:59 UTC 2020


On Sat, 15 Aug 2020, David Feuer wrote:

> Data.Sequence uses the same precedence for both, which strikes me as a bit sad.
> Surprisingly, I am not seeing other packages on Hackage that define similar
> operators.

I have the same problem in the 'lapack' bindings.

I like to allow people to write

   (row) vector -*# matrix #*# matrix #*| (column) vector


I had no good idea, though, and also chose equal precedence for all 
operators.


> On Thu, Aug 13, 2020 at 2:50 PM Andreas Abel <andreas.abel at ifi.lmu.de> wrote:
>>
>> My hunch would be too look at what the others do to form an opinion.
>>
>> On 2020-08-13 19:26, David Feuer wrote:
>> > I'm trying to work out appropriate precedences for operators and pattern
>> > synonyms in my brand-new compact-sequences package. I currently have
>> > stacks and queues, but I will soon have deques, so let's pretend. For
>> > consistency, operators will match pattern synonyms.
>> >
>> > (<|), pattern (:<) :: a -> Deque a -> Deque a
>> > (|>), pattern (:>) :: Deque a -> a -> Deque a
>> >
>> > :< and :> need to have different precedence to allow things like
>> >
>> >    a :< b :< xs :> c :> d
>> >
>> > to work nicely, but what numbers should I pick?
>> >
>> > I also have cons and snoc functions. Should I give their backticked
>> > spellings fixity declarations? If so, with what precedences?

I would give them the precedence of their infix counterparts.


More information about the Libraries mailing list