[#3741] Re: Why it's quiet -- standard distribution issues — Aleksi Niemel<aleksi.niemela@...>
I think it's the feature of the mailing list archive to create a threads of
[#3756] RE: XMP on comments — Aleksi Niemel<aleksi.niemela@...>
> require "xmp"
[#3766] modulo and remainder — Dave Thomas <Dave@...>
[#3776] Kernel.rand — Aleksi Niemel<aleksi.niemela@...>
How about defining:
[#3781] Widening out discussions — Dave Thomas <Dave@...>
[#3795] Re: Array.uniq! returning nil — Aleksi Niemel<aleksi.niemela@...>
> As matz said in [ruby-talk:3785] and Dave said in [ruby-talk:1229],
Hi, Aleksi,
[#3823] Re: Array.pick — Aleksi Niemel<aleksi.niemela@...>
> > Just a general comment--a brief statement of purpose and using
[#3827] JRuby? — Aleksi Niemel<aleksi.niemela@...>
Is there or will there be Ruby equivalent of JPython?
[#3882] Re: Array.uniq! returning nil — Aleksi Niemel<aleksi.niemela@...>
> |look too strange, confusing, or cryptic. Maybe just @, $, %, &.
Hi,
[#3918] A question about variable names... — Dave Thomas <Dave@...>
[#3935] If your company uses Pallets, Skids, Boxes, Lumber, etc. — pallets2@...
[#3956] Tk PhotoImage options — andy@... (Andrew Hunt)
Hi all,
[#3971] Thread and File do not work together — "Michael Neumann" <neumann@...>
following example do not work correctly with my ruby
[#3986] Re: Principle of least effort -- another Ruby virtue. — Andrew Hunt <andy@...>
> Principle of Least Effort.
Hi,
[#4005] Re: Pluggable functions and blocks — Aleksi Niemel<aleksi.niemela@...>
Aleksi makes a question:
[#4008] Ruby installation instructions for Windows — Aleksi Niemel<aleksi.niemela@...>
I had to write these instructions for my friends. I thought it might be nice
[#4043] What are you using Ruby for? — Dave Thomas <Dave@...>
On 15 Jul 2000 22:08:50 -0500,
Hi,
[#4057] Re: What are you using Ruby for? — Aleksi Niemel<aleksi.niemela@...>
Johann:
[#4082] Re: What are you using Ruby for? — Aleksi Niemel<aleksi.niemela@...>
[#4091] 'each' and 'in' — hal9000@...
I just recently realized why the default
[#4107] Re: 'each' and 'in' -- special char problem? — schneik@...
[#4114] Method signature - a question for the group — Dave Thomas <Dave@...>
[#4139] Facilitating Ruby self-propagation with the rig-it autopolymorph application. — Conrad Schneiker <schneik@...>
Hi,
[#4158] Getting Tk to work on Windows — "Michael Neumann" <neumann@...>
Hi....
[#4178] Partly converted English Ruby/Tk widget demo working. — Conrad Schneiker <schneik@...>
Hi,
[#4234] @ variables not updated within method? — Hugh Sasse Staff Elec Eng <hgs@...>
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
On 27 Jul 2000, Dave Thomas wrote:
[#4267] Ruby.next, Perl6, Python 3000, Tcl++, etc. -- Any opportunities for common implementation code? — "Conrad Schneiker" <schneiker@...>
Hi,
"Conrad Schneiker" wrote:
[ruby-talk:04004] Re: Array.uniq! returning nil
Jo asks: > |But I don't understand your decision to _not_ follow Scheme tradition Matz responds: > The reason is, as a totally object-oriented language, Ruby has too > many operations with side-effect. If I choose Scheme way of bang > usage, Ruby programs are filled with bangs. That is ugly, at least > not my taste. That's why. I like your view here! I think you're quite correct. First bang-methods were new to me and I wanted to have them used consistently. Then I realised it would cause the programs to be stabbed all over with these ugly attention collectors. One would lose the interest to be alerted with '!' anymore. Then I understood that most of methods *are* self-modifying by nature, and it's quite apparent when named well: array.delete_at(index) says it clearly. So we really don't need bang-methods all over. Even if it's inconsistent from a smalltalk point of view, it's consistent with other principle. That principle is to tag '!' to the method with self-modifying nature if there's a counterpart method with the same basic semantics (function) but without self-modifying nature. Example case could be Array#reverse and reverse!, which function is easy to guess and it works exactly in same way, just the object it operates upon is different (in Array#reverse case it's the object returned by receiver.dup, not the receiver itself). Jo continues: > |here? After all it's understandable, and it's easy to remember. This principle is understandable and easy to remember too. But here's the catch. Ruby does not follow this principle all the time. Array#uniq and Array#uniq! are mostly same but differ in possible returning value types. The difference should be only that Array#uniq is array.dup.uniq!, but actually it's more than that. Array#uniq can't return nil, but Array#uniq! can. So the caller side have to be specifically adapted to the used version. One can say: array=[1,2,3].uniq # array refers to Array object [1,2,3] but can't say array=[1,2,3].uniq! # array refers to nil and expect to have an array which refers always to an object which class is Array. Matz says: > Hope this explains what I feel. This explains a lot. Thank you. Now I can see how clear your thinking has been here (too :). Still I don't know if the fact that method! can return nil was just introduced when needed (as someone pulled in some code to show it in this thread), and the current functionality remains because there's loads of code relying on it, or whether it was thought, and decided, to be inconsistent with the principle I just phrased. (Perhaps because Ruby is following here some other clean and simple priciple.) - Aleksi