Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > reverse #succ ?

Reply
Thread Tools

reverse #succ ?

 
 
trans. (T. Onoma)
Guest
Posts: n/a
 
      10-27-2004
Is there a reverse #succ for String? If not, could there be?

T.


 
Reply With Quote
 
 
 
 
Hal Fulton
Guest
Posts: n/a
 
      10-27-2004
trans. (T. Onoma) wrote:
> Is there a reverse #succ for String? If not, could there be?


It's one of those things that looks easy until you try it.

There are too many "edge cases" that require judgment about how
to generate the next value.

Search the archives, it's been discussed off and on for five years.


Hal



PS - Are the archives up again yet??



 
Reply With Quote
 
 
 
 
Yukihiro Matsumoto
Guest
Posts: n/a
 
      10-27-2004
Hi,

In message "Re: reverse #succ ?"
on Wed, 27 Oct 2004 14:17:13 +0900, Hal Fulton <(E-Mail Removed)> writes:

|PS - Are the archives up again yet??

It's up now.

The list archive hosted in the Nagaoka University of Technology, which
is recently hit by severe earthquake in Niigata prefecture, Japan.
The archive maintainer, Shin-ichiro Hara, told us that he and his
family were safe. So were the machines at his office.

matz.


 
Reply With Quote
 
trans. (T. Onoma)
Guest
Posts: n/a
 
      10-27-2004
On Wednesday 27 October 2004 01:17 am, Hal Fulton wrote:
| trans. (T. Onoma) wrote:
| > Is there a reverse #succ for String? If not, could there be?
|
| It's one of those things that looks easy until you try it.
|
| There are too many "edge cases" that require judgment about how
| to generate the next value.
|
| Search the archives, it's been discussed off and on for five years.

Thanks and yes the archives are back up. I found a few hits. I see the
problem. Though, I don't really care if it's a one-to-one match to #succ. I
would just prefer that my Range#reverse_each method doesn't blow up
Certainly there must a basic #pred method that makes sense.

Then again how much use does String#succ actually get? And what for? Can
anyone really give a use case truly dependent on the specific current
behavior? Would it make more sense if it were simply an ascii "dial", within
a particular range of characters? And perhaps too that particular range could
have a redefinable specal global.

T.


 
Reply With Quote
 
trans. (T. Onoma)
Guest
Posts: n/a
 
      10-27-2004
On Wednesday 27 October 2004 01:41 am, Yukihiro Matsumoto wrote:
| Hi,
|
| In message "Re: reverse #succ ?"
|
| on Wed, 27 Oct 2004 14:17:13 +0900, Hal Fulton
<(E-Mail Removed)> writes:
| |PS - Are the archives up again yet??
|
| It's up now.
|
| The list archive hosted in the Nagaoka University of Technology, which
| is recently hit by severe earthquake in Niigata prefecture, Japan.
| The archive maintainer, Shin-ichiro Hara, told us that he and his
| family were safe. So were the machines at his office.

Give him our best then. I know what it can be like. We recently had a couple
of bad tsunamis in the neck of the woods (Florida).

T.


 
Reply With Quote
 
Edwin Eyan Moragas
Guest
Posts: n/a
 
      10-27-2004
> |
> | It's up now.
> |
> | The list archive hosted in the Nagaoka University of Technology, which
> | is recently hit by severe earthquake in Niigata prefecture, Japan.
> | The archive maintainer, Shin-ichiro Hara, told us that he and his
> | family were safe. So were the machines at his office.



here's to the safety of us all. we've been hit by earthquakes recently also.
--
edwin eyan moragas

ha... a... k... tu!


 
Reply With Quote
 
illocutionist
Guest
Posts: n/a
 
      11-10-2004
"trans. (T. Onoma)" <(E-Mail Removed)> wrote in message news:<(E-Mail Removed)>...
> On Wednesday 27 October 2004 01:17 am, Hal Fulton wrote:
> | trans. (T. Onoma) wrote:
> | > Is there a reverse #succ for String? If not, could there be?
> |
> | It's one of those things that looks easy until you try it.
> |
> | There are too many "edge cases" that require judgment about how
> | to generate the next value.
> |
> | Search the archives, it's been discussed off and on for five years.
>
> Thanks and yes the archives are back up. I found a few hits. I see the
> problem. Though, I don't really care if it's a one-to-one match to #succ. I
> would just prefer that my Range#reverse_each method doesn't blow up
> Certainly there must a basic #pred method that makes sense.
>
> Then again how much use does String#succ actually get? And what for? Can
> anyone really give a use case truly dependent on the specific current
> behavior? Would it make more sense if it were simply an ascii "dial", within
> a particular range of characters? And perhaps too that particular range could
> have a redefinable specal global.
>
> T.


#pred leads to the gates of madness.
Mr. Fulton is right in that it doesnt sound too hard to
implement until you try it.

I have used String#succ to ummm, 'test', the strength of passwords.
The current implementation doesnt allow that if a password uses more
printable chars than letters or numbers.

An ascii 'dial' with a definable, or redefinable, range would be just
perfect.
ascci_succ ?
'z9'.succ => 'aa0'
'z9'.a_succ => 'z:'

I just wonder if it should be a 'wheel' or 'dial', or if it should just have
borders. 'a'.. 'the_end_of_the_line' of printable char range.
 
Reply With Quote
 
trans. (T. Onoma)
Guest
Posts: n/a
 
      11-10-2004
(Thanks to all who have taken some time with this and String Range thread.)

On Tuesday 09 November 2004 10:28 pm, illocutionist wrote:
| > On Wednesday 27 October 2004 01:17 am, Hal Fulton wrote:
| > | trans. (T. Onoma) wrote:
| > | > Is there a reverse #succ for String? If not, could there be?
| > |
| > | It's one of those things that looks easy until you try it.
| > |
| > | There are too many "edge cases" that require judgment about how
| > | to generate the next value.
| > |
| > | Search the archives, it's been discussed off and on for five years.
| >
| > Thanks and yes the archives are back up. I found a few hits. I see the
| > problem. Though, I don't really care if it's a one-to-one match to #succ.
| > I would just prefer that my Range#reverse_each method doesn't blow up
| > Certainly there must a basic #pred method that makes sense.
| >
| > Then again how much use does String#succ actually get? And what for? Can
| > anyone really give a use case truly dependent on the specific current
| > behavior? Would it make more sense if it were simply an ascii "dial",
| > within a particular range of characters? And perhaps too that particular
| > range could have a redefinable specal global.
| >
| > T.
|
| #pred leads to the gates of madness.
| Mr. Fulton is right in that it doesnt sound too hard to
| implement until you try it.

Almost. I managed to dig up a working #pred method in ruby-talk archives. I
think robert wrote it (have to check to be sure), but it works well enough,
given that it would probably never be used

| I have used String#succ to ummm, 'test', the strength of passwords.
| The current implementation doesnt allow that if a password uses more
| printable chars than letters or numbers.
|
| An ascii 'dial' with a definable, or redefinable, range would be just
| perfect.
| ascci_succ ?
| 'z9'.succ => 'aa0'
| 'z9'.a_succ => 'z:'
|
| I just wonder if it should be a 'wheel' or 'dial', or if it should just
| have borders. 'a'.. 'the_end_of_the_line' of printable char range.

It has become increasing apparent to me that string ranges are of very limited
use --primarily they seemed to be used just to get a list of letters a-z.
While I'm sure there are at least a couple cases out there somewhere in which
the current behavior is quite useful, a number of of alternates have been
suggested to make it even more so; the general "dial" being one of them.
Another interesting idea is dictionary-order given a "depth" parameter. For
instance:

'a'.succ(1) #=> 'b'
'z'.succ(1) #=> nil (nothing after z of depth 1)
'a'.succ(2) #=> 'aa'
'aa'.succ(2) #=> 'ab'
'az'.succ(2) #=> 'b'
'b'.succ(2) #=> 'ba'

and so forth. Of course other methods would require adjustment to handle the
parameter, but that is fairly easy to do. No doubt there are other variations
of a more useful #succ as well.

Clearly what would be better is some sort of Iterator / Enumerator /
Generator, perhaps provided by a String class method to which parameters can
be passed to determine behavior --or perhaps a few such methods. For example,
one method might be as above:

sg = String.dict_enum('A-B', 2)
sg.to_a
#=> [ 'A', 'AA', 'AB', 'B', 'BA', 'BB' ]

Speaking of which, if any one has a general purpose string generator, I would
really love to get a hold of it.

My overall conclusion is that string ranges have held back the Range class. On
suby-ruby we have been able to get Range to behave uniformally even with
string ranges. This required using an alternative comparesion method (#cmp
instead of #<=>). But given the limited usefulness of the current String#succ
in contrast to the other useful possibilities for generating a list of
ordered strings, plus the "headache" it causes Range to support it, it seems
to me that it might be better just to let it go. Besides, it is easy enough
to do:

?a..?z

If one needs simple character enumeration.

Opinions on this are greatly welcome.

T.

P.S. Of course, if anyone can figure out a way to create a one-to-one
correspondence between strings and floats, then we'd have whole new ball game
on our hands!


 
Reply With Quote
 
illocutionist
Guest
Posts: n/a
 
      11-10-2004
"trans. (T. Onoma)" <(E-Mail Removed)> wrote in message news:<(E-Mail Removed)>...
> (Thanks to all who have taken some time with this and String Range thread.)
>
> On Tuesday 09 November 2004 10:28 pm, illocutionist wrote:
> | > On Wednesday 27 October 2004 01:17 am, Hal Fulton wrote:
> | > | trans. (T. Onoma) wrote:
> | > | > Is there a reverse #succ for String? If not, could there be?
> | > |
> | > | It's one of those things that looks easy until you try it.
> | > |
> | > | There are too many "edge cases" that require judgment about how
> | > | to generate the next value.
> | > |
> | > | Search the archives, it's been discussed off and on for five years.
> | >
> | > Thanks and yes the archives are back up. I found a few hits. I see the
> | > problem. Though, I don't really care if it's a one-to-one match to #succ.
> | > I would just prefer that my Range#reverse_each method doesn't blow up
> | > Certainly there must a basic #pred method that makes sense.
> | >
> | > Then again how much use does String#succ actually get? And what for? Can
> | > anyone really give a use case truly dependent on the specific current
> | > behavior? Would it make more sense if it were simply an ascii "dial",
> | > within a particular range of characters? And perhaps too that particular
> | > range could have a redefinable specal global.
> | >
> | > T.
> |
> | #pred leads to the gates of madness.
> | Mr. Fulton is right in that it doesnt sound too hard to
> | implement until you try it.
>
> Almost. I managed to dig up a working #pred method in ruby-talk archives. I
> think robert wrote it (have to check to be sure), but it works well enough,
> given that it would probably never be used
>


Take a gander at Mr Fernandez's stab at it under:
The Opposite of .succ!
(Young and foolish I was)
*Now I'm old and foolish, but thats another thread*

> | I have used String#succ to ummm, 'test', the strength of passwords.
> | The current implementation doesnt allow that if a password uses more
> | printable chars than letters or numbers.
> |
> | An ascii 'dial' with a definable, or redefinable, range would be just
> | perfect.
> | ascci_succ ?
> | 'z9'.succ => 'aa0'
> | 'z9'.a_succ => 'z:'
> |
> | I just wonder if it should be a 'wheel' or 'dial', or if it should just
> | have borders. 'a'.. 'the_end_of_the_line' of printable char range.
>
> It has become increasing apparent to me that string ranges are of very limited
> use --primarily they seemed to be used just to get a list of letters a-z.


consider this little bit o' perl:
$hexdigit = (0 .. 9, 'a' .. 'f')[$num & 15];
^ the ability to do this would be nice.


> While I'm sure there are at least a couple cases out there somewhere in which
> the current behavior is quite useful, a number of of alternates have been
> suggested to make it even more so; the general "dial" being one of them.
> Another interesting idea is dictionary-order given a "depth" parameter. For
> instance:
>
> 'a'.succ(1) #=> 'b'
> 'z'.succ(1) #=> nil (nothing after z of depth 1)
> 'a'.succ(2) #=> 'aa'
> 'aa'.succ(2) #=> 'ab'
> 'az'.succ(2) #=> 'b'
> 'b'.succ(2) #=> 'ba'
>


Yikes.
No, that would breed much confusion for the average user.
It could be usefull, but IMO, would be a huge mistake if
added to the standard.
Too easy to trip oneself up.

I would vote for the wheel first.

> and so forth. Of course other methods would require adjustment to handle the
> parameter, but that is fairly easy to do. No doubt there are other variations
> of a more useful #succ as well.
>
> Clearly what would be better is some sort of Iterator / Enumerator /
> Generator, perhaps provided by a String class method to which parameters can
> be passed to determine behavior --or perhaps a few such methods. For example,
> one method might be as above:
>
> sg = String.dict_enum('A-B', 2)
> sg.to_a
> #=> [ 'A', 'AA', 'AB', 'B', 'BA', 'BB' ]
>
> Speaking of which, if any one has a general purpose string generator, I would
> really love to get a hold of it.
>
> My overall conclusion is that string ranges have held back the Range class. On
> suby-ruby we have been able to get Range to behave uniformally even with
> string ranges. This required using an alternative comparesion method (#cmp
> instead of #<=>). But given the limited usefulness of the current String#succ
> in contrast to the other useful possibilities for generating a list of
> ordered strings, plus the "headache" it causes Range to support it, it seems
> to me that it might be better just to let it go. Besides, it is easy enough
> to do:
>
> ?a..?z
>
> If one needs simple character enumeration.
>
> Opinions on this are greatly welcome.
>
> T.
>
> P.S. Of course, if anyone can figure out a way to create a one-to-one
> correspondence between strings and floats, then we'd have whole new ball game
> on our hands!

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
cisco/DNP/SCADA and reverse telnet A. Andrews Cisco 0 01-08-2004 06:32 PM
Reverse engineering an EDIF file? Rastislav Struharik VHDL 8 01-02-2004 01:57 PM
Question on Cisco reverse Subnets James Roper Cisco 2 12-16-2003 10:37 PM
Stacks Queues Reverse Reverse Polish dogbite C++ 4 10-10-2003 05:06 AM
Re: AS5350 reverse telnet Aaron Leonard Cisco 0 07-09-2003 11:49 PM



Advertisments