RE: A question about certain language features

new topic     » goto parent     » topic index » view thread      » older message » newer message

While it is possible to write foo[1..0], I'd be baffled to see it in 
someone's code. You could easily write {} or "" instead.

The entire implementation of shorthand slicing breaks down to 1 item:
length(s)

My logic is that '0' is the only element not currently usable, so 
naturally it should be used to represent the length of s (not 'end of 
sequence').
Imagine a sequence s, in EU's memory with a length of 5.
I know this isn't how sequences work, but looking from the outside, 
in...
s[5][1][2][3][4][5]
  0  1  2  3  4  5

When you break it down to the single factor: length(s),
s[0] makes plenty of sense to me.

When I was writing EUPP, I tossed around the idea of using a symbol 
instead of '0' for the same reason that Derek said, it's prone to being 
typed unintentionally. When I tried other symbols, I felt like I was 
having to learn something new, whereas it seemed natural to use '0'. I 
also found that '0' was easier for me to discern than other symbols.

I was also not enthusiastic about introducing a new symbol where an 
existing symbol would work and seemed natural.

I tried using no symbol, and was distraught with the lack of 
readability. The symbols serve as separators as well as designators. 
without the end symbol, or without the start symbol, it was hard to tell 
where one slice ended and another began. The time spent trying to read 
the code outwieghed the time spent writing it.

The best alternative to '0' that I came up with was '?'. It's the most 
readable symbol that can be used, it doesn't add any new symbols to the 
language, and it goes with the shorthand already implemented for 
print().

Instead of thinking of ? as a shorthand for print(), it would instead be 
thought of as just a shorthand. I suspect there are other places in EU's 
syntax where this could be put to use as well.

To add to the benefit of using ? we could have:
?? as a shorthand for printing strings

I don't particularly care what symbol is used, but I think there are 
benefits to one over another. I know Derek's point, and the logic to 
using '0' is fairly obscure :P
That's why I suggest ? instead.

Someone might argue that ? is already used as a symbol in EU. Only in 
one specific case, and it's barely utilized. I'd rather have an old dog 
with a new trick, than a new dog with a new trick. Instead of 2 dogs 
with two tricks, I have one dog with 2 tricks.

I've noticed that people have the mindset of the symbol representing the 
'END' of the sequence. I prefer to think of the symbol as representing 
the 'LENGTH' of the sequence. Just semantics, but it makes more sense to 
me, seeing as we are only talking about the outer dimension of a 
sequence, and the actual code that would be replaced is length().

Chris

Mike Nelson wrote:
> foo[1..0] is already a legal (null) slice, using it to mean length(foo) 
> will
> break existing code.  Perhaps a better scheme would be using -1 for the 
> end
> of the sequence.  This is also fairly intuitive:
> 
> foo[1..3] means the first thru third elements conting from the 
> beginning,
> and
> foo[-3..-1] would mean the third thru first elements counting from the 
> end.
> 
> also something like foo[2..-2] would be legal (this would return the
> sequence minus the first and last element)
> 
> Internally a negative slice would be converted like this:
> 
> foo[-3..-1] becomes foo[length(foo)+1-3,length(foo)=1-1]  which can be
> simplifed in this case to foo[length(foo)-2..length(foo)]
> 
> Of course, the same negative indexing should apply to subscripts, where 
> it
> is even more intuitive:
> 
> foo[4] is the fouth element form the beginning, foo[-4] is the fourth
> element from the end.
> 
> -- Mike Nelson
> 
>

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu