Re: Reversing a string

2019-01-12 Thread Seb via Digitalmars-d-learn

On Friday, 11 January 2019 at 19:16:05 UTC, AlCaponeJr wrote:

On Friday, 11 January 2019 at 11:15:05 UTC, Mike James wrote:

Check out the origin :-)

https://forum.dlang.org/thread/hl8345$2b1q$1...@digitalmars.com?page=1


Indeed a terrible name, please don't tell me this was chosen by 
vote.


By the way currently is there any vote system for naming these 
things?


Al.


No. There are zero plans to break a ton of code by changing the 
name of a symbol in the standard library.


It's more likely that someone comes along with a new general 
purpose library which hasn't seen much usage and thus can define 
slightly better names.


Re: Reversing a string

2019-01-11 Thread AlCaponeJr via Digitalmars-d-learn

On Friday, 11 January 2019 at 11:15:05 UTC, Mike James wrote:

Check out the origin :-)

https://forum.dlang.org/thread/hl8345$2b1q$1...@digitalmars.com?page=1


Indeed a terrible name, please don't tell me this was chosen by 
vote.


By the way currently is there any vote system for naming these 
things?


Al.


Re: Reversing a string

2019-01-11 Thread Steven Schveighoffer via Digitalmars-d-learn

On 1/11/19 1:25 PM, 0xEAB wrote:

On Friday, 11 January 2019 at 13:51:04 UTC, JN wrote:

On Friday, 11 January 2019 at 11:15:05 UTC, Mike James wrote:

Check out the origin :-)

https://forum.dlang.org/thread/hl8345$2b1q$1...@digitalmars.com?page=1



I guess something like iterReverse, reverseIter, backIterator would be 
too simple...


Of course. I would protrude from all other functions with their weird 
names then.


Just kidding. Although...
I have to admit it happened more than just once that I thought, "oh... 
another function that's named exactly different from what I'd have gone 
with."


Part of the problem is that arr.reverse already was defined a long time ago.

The thing about retro, is that even though it's not what I would think 
of for this operation, I have never forgotten the name since ;)


-Steve


Re: Reversing a string

2019-01-11 Thread 0xEAB via Digitalmars-d-learn

On Friday, 11 January 2019 at 13:51:04 UTC, JN wrote:

On Friday, 11 January 2019 at 11:15:05 UTC, Mike James wrote:

Check out the origin :-)

https://forum.dlang.org/thread/hl8345$2b1q$1...@digitalmars.com?page=1



I guess something like iterReverse, reverseIter, backIterator 
would be too simple...


Of course. I would protrude from all other functions with their 
weird names then.


Just kidding. Although...
I have to admit it happened more than just once that I thought, 
"oh... another function that's named exactly different from what 
I'd have gone with."


Re: Reversing a string

2019-01-11 Thread Adam D. Ruppe via Digitalmars-d-learn

On Friday, 11 January 2019 at 13:51:04 UTC, JN wrote:
I guess something like iterReverse, reverseIter, backIterator 
would be too simple...


or foreach_reverse, which never actually was removed!

lol


Re: Reversing a string

2019-01-11 Thread JN via Digitalmars-d-learn

On Friday, 11 January 2019 at 11:15:05 UTC, Mike James wrote:

Check out the origin :-)

https://forum.dlang.org/thread/hl8345$2b1q$1...@digitalmars.com?page=1



I guess something like iterReverse, reverseIter, backIterator 
would be too simple...




Re: Reversing a string

2019-01-11 Thread AndreasDavour via Digitalmars-d-learn

On Friday, 11 January 2019 at 11:15:05 UTC, Mike James wrote:

On Friday, 11 January 2019 at 09:41:30 UTC, bauss wrote:

On Friday, 11 January 2019 at 08:25:41 UTC, Seb wrote:
On Friday, 11 January 2019 at 08:05:39 UTC, AndreasDavour 
wrote:

Hi.

I've just started to learn some D, so maybe this question is 
extremely stupid, but please bear with me.


[...]


Use .retro - it is also lazy and won't allocate:

https://run.dlang.io/is/A6bjrC


What a terrible name.


Check out the origin :-)

https://forum.dlang.org/thread/hl8345$2b1q$1...@digitalmars.com?page=1


-=mike=-



Look at that.

Incidentally, I kind of like "foreach(i; 99 .. 0 : -1)".


Re: Reversing a string

2019-01-11 Thread bauss via Digitalmars-d-learn

On Friday, 11 January 2019 at 11:15:05 UTC, Mike James wrote:

On Friday, 11 January 2019 at 09:41:30 UTC, bauss wrote:

On Friday, 11 January 2019 at 08:25:41 UTC, Seb wrote:
On Friday, 11 January 2019 at 08:05:39 UTC, AndreasDavour 
wrote:

Hi.

I've just started to learn some D, so maybe this question is 
extremely stupid, but please bear with me.


[...]


Use .retro - it is also lazy and won't allocate:

https://run.dlang.io/is/A6bjrC


What a terrible name.


Check out the origin :-)

https://forum.dlang.org/thread/hl8345$2b1q$1...@digitalmars.com?page=1


-=mike=-


I wish I could live my life peacefully, but apparently not.



Re: Reversing a string

2019-01-11 Thread Mike James via Digitalmars-d-learn

On Friday, 11 January 2019 at 09:41:30 UTC, bauss wrote:

On Friday, 11 January 2019 at 08:25:41 UTC, Seb wrote:
On Friday, 11 January 2019 at 08:05:39 UTC, AndreasDavour 
wrote:

Hi.

I've just started to learn some D, so maybe this question is 
extremely stupid, but please bear with me.


[...]


Use .retro - it is also lazy and won't allocate:

https://run.dlang.io/is/A6bjrC


What a terrible name.


Check out the origin :-)

https://forum.dlang.org/thread/hl8345$2b1q$1...@digitalmars.com?page=1


-=mike=-


Re: Reversing a string

2019-01-11 Thread AndreasDavour via Digitalmars-d-learn

On Friday, 11 January 2019 at 09:41:30 UTC, bauss wrote:

On Friday, 11 January 2019 at 08:25:41 UTC, Seb wrote:
On Friday, 11 January 2019 at 08:05:39 UTC, AndreasDavour 
wrote:

Hi.

I've just started to learn some D, so maybe this question is 
extremely stupid, but please bear with me.


[...]


Use .retro - it is also lazy and won't allocate:

https://run.dlang.io/is/A6bjrC


What a terrible name.


Well, it was not the first one I would have searched for, no.

Good to know it exists as well, though. Thanks!


Re: Reversing a string

2019-01-11 Thread bauss via Digitalmars-d-learn

On Friday, 11 January 2019 at 08:25:41 UTC, Seb wrote:

On Friday, 11 January 2019 at 08:05:39 UTC, AndreasDavour wrote:

Hi.

I've just started to learn some D, so maybe this question is 
extremely stupid, but please bear with me.


[...]


Use .retro - it is also lazy and won't allocate:

https://run.dlang.io/is/A6bjrC


What a terrible name.


Re: Reversing a string

2019-01-11 Thread AndreasDavour via Digitalmars-d-learn

On Friday, 11 January 2019 at 08:45:12 UTC, JN wrote:
On Friday, 11 January 2019 at 08:15:01 UTC, rikki cattermole 
wrote:
Note the immutable, it means you cannot modify individual 
values. Which is a problem for reverse because it modifies in 
place.




The error message is kind of unfortunate. This is a simple 
usecase and the error message is undecipherable already. It'd 
be cool if the compiler could try to strip immutability, and if 
the type matches then, throw an error something like "Cannot 
pass immutable char[] to reverse, did you mean char[]?".


That would help a lot, as I got "rikki cattermole"'s answer at 
once, when my eyes were brought to the "immutable" part.


I come from the lisp world, so I'm kind of familiar with the idea 
of copying and/or modifying in place to limit consing. I guess I 
should I have realised this would be a perfect example of that 
kind of situation.


Re: Reversing a string

2019-01-11 Thread JN via Digitalmars-d-learn
On Friday, 11 January 2019 at 08:15:01 UTC, rikki cattermole 
wrote:
Note the immutable, it means you cannot modify individual 
values. Which is a problem for reverse because it modifies in 
place.




The error message is kind of unfortunate. This is a simple 
usecase and the error message is undecipherable already. It'd be 
cool if the compiler could try to strip immutability, and if the 
type matches then, throw an error something like "Cannot pass 
immutable char[] to reverse, did you mean char[]?".


Re: Reversing a string

2019-01-11 Thread Seb via Digitalmars-d-learn

On Friday, 11 January 2019 at 08:05:39 UTC, AndreasDavour wrote:

Hi.

I've just started to learn some D, so maybe this question is 
extremely stupid, but please bear with me.


[...]


Use .retro - it is also lazy and won't allocate:

https://run.dlang.io/is/A6bjrC


Re: Reversing a string

2019-01-11 Thread rikki cattermole via Digitalmars-d-learn
So strings in D are Unicode. This is both a great thing and a horrible 
thing.
To reverse a Unicode string correctly you need to take into account BiDi 
and graphemes, in other words it gets rather complex. However I suspect 
that this isn't what you want.


Now a (w/d)string is defined as:

alias string  = immutable(char)[];
alias wstring = immutable(wchar)[];
alias dstring = immutable(dchar)[];

Note the immutable, it means you cannot modify individual values. Which 
is a problem for reverse because it modifies in place.


Which means:

writeln("Hello D".reverse);

Won't work, but:

writeln("Hello D".dup.reverse);

Will. A simple duplication (char[]) makes it work.

Finally, arrays in D are absolutely brilliant. They are what we call 
slices. A slice is a pointer + a length. That is it. Hence they cannot 
be reversed in place. Of course this is great for interacting with e.g. 
C, since its just a matter of slicing any data back to get your bounds 
checking ext.