[darcs-devel] [patch1267] changed the argument order of PatchSet and backward operators
Ganesh Sittampalam
ganesh at earth.li
Mon Jun 15 20:28:06 UTC 2015
On 15/06/2015 20:23, Ben Franksen wrote:
> Ganesh Sittampalam wrote:
>> On 15/06/2015 16:02, Ben Franksen wrote:
>>> Ganesh Sittampalam wrote:
>>>> On 14/06/2015 20:02, Ben Franksen wrote:
>>>>> Ganesh Sittampalam wrote:
>>>>>> On 14/06/2015 18:20, Ben Franksen wrote:
>>>>
>>>>>>> I am not wedded to :- (I agree that sometimes it looks weird,
>>>>>>> especially with _ on the RHS i.e. p :- _). We could as well use :|:
>>>>>>> or
>>>>>>> :* (the latter is often used for product, so that might give people
>>>>>>> :an
>>>>>>> intuition).
>>>>>>
>>>>>> :|: wouldn't work well, because we have :||: for parallel pairs (pairs
>>>>>> of patches with the same starting and ending contexts).
>>>>>
>>>>> Right. So what about (:*) ?
>>>>
>>>> I can live with that, though I'd prefer something less symmetric.
>>>
>>> We still have a problem with the operator names. I was wrong to say that
>>> the < and > symbols indicate the small and large arguments. I thought it
>>> was so and payed the bill just now before I finally realized that I was
>>> wrong.
>>>
>>> I had also not taken into account the +>+ and +<+ operators for appending
>>> FLs and RLs, respectively. With them there is no small or large argument.
>>> So the only intuition is that the direction is as in the corresponding
>>> FL/RL data constructor. If we also fix the constructor direction we'd
>>> get:
>>>
>>> :* pair
>>> :<: FL cons
>>> :>:RL cons
>>> +<+ FL append
>>> +>+ RL append
>>>
>>> i.e. exactly the opposite of what we have now =:|
>>
>> Just to expand on one proposal of mine from earlier, how about
>>
>> :> pair
>> :>: FL cons
>> :>>: RL cons (snoc)
>> +>+ FL append
>> +>>+ RL append
>
> I feel quite strongly that the operator naming should (continue to) reflect
> the basic symmetry (or rather: duality) between FL and RL. None of them is
> any more or less fundamental than the other. (If anything, RL is more
> important than FL because most operations access the end of the history.)
>
> Apart from < and >, the only opposite pair of ASCII symbols I found is / and
> \, so alternatively one could use / for FL (mnemonic for cons: upward stroke
> means LHS is smaller than RHS) and \ for RL as in:
>
> :> pair
> :/: FL cons
> :\: RL cons (snoc)
> +/+ FL append
> +\+ RL append
>
> This would at least partly address your point because we no longer had
> operators "pointing in the wrong direction". It also enables use of :> for
> pairing without giving it any (misleading) association with FL.
I'm not entirely comfortable with this - in part because :\/: and :/\:
might then seem like more complicated versions of :/: and :\: - but I
can live with it.
Ganesh
More information about the darcs-devel
mailing list