[e-lang] Documentation bug for FlexList

David Hopwood david.nospam.hopwood at blueyonder.co.uk
Fri Mar 16 12:12:40 CDT 2007

Kevin Reid wrote:
> On Mar 15, 2007, at 23:43, David Hopwood wrote:
>># void setRun(int start, int bound, EList other)
>># Enabled: Replace from start..!bound in this list with other.
>>? def a := [2, 3, 4].diverge()
>># value: [2, 3, 4].diverge()
>>? a.setRun(0, 0, [1])
>>? a
>># value: [1, 2, 3, 4].diverge()
>>1. Why is this called 'setRun'? 'insertRun' would make more sense.
> Note that the name "setRun" is part of the assignment sugar:
>    a(b, c) := d
> expands to
>    a.setRun(b, c, def ares__1 := d)
>    ares__1
> , and a(b, c) is of course a.run(b, c).

How often is this used? I'm not sure I see the justification for
syntactic sugar here. Assuming the expression is not normally relied
on to return d, it only saves 5 characters (8 with the 'insertRun'
name change), and it is not at all obvious that it does an insertion.

Wouldn't "a.insertRun(b, c, d)" be better in every significant way?

> Whatever name change you propose must also fit generically into the  
> assignment sugar.
> Separately:
> - Calling this "replacement" in the documentation is consistent with  
> replace/5, which is the same operation except with the ability to  
> specify a subrange of the source list.

Then that documentation has the same problem. Also, it's not clear why
this method should have a different name, rather than being an overload
(e.g. 'insertRun/5').

> - What would you think of the name "putRun"?

No better than 'setRun'.

David Hopwood <david.nospam.hopwood at blueyonder.co.uk>

More information about the e-lang mailing list