[#5218] Ruby Book Eng tl, ch1 question — Jon Babcock <jon@...>

13 messages 2000/10/02

[#5404] Object.foo, setters and so on — "Hal E. Fulton" <hal9000@...>

OK, here is what I think I know.

14 messages 2000/10/11

[#5425] Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Jon Babcock <jon@...>

18 messages 2000/10/11
[#5427] RE: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — OZAWA -Crouton- Sakuro <crouton@...> 2000/10/11

At Thu, 12 Oct 2000 03:49:46 +0900,

[#5429] Re: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Jon Babcock <jon@...> 2000/10/11

Thanks for the input.

[#5432] Re: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Yasushi Shoji <yashi@...> 2000/10/11

At Thu, 12 Oct 2000 04:53:41 +0900,

[#5516] Re: Some newbye question — ts <decoux@...>

>>>>> "D" == Davide Marchignoli <marchign@di.unipi.it> writes:

80 messages 2000/10/13
[#5531] Re: Some newbye question — matz@... (Yukihiro Matsumoto) 2000/10/14

Hi,

[#5544] Re: Some newbye question — Davide Marchignoli <marchign@...> 2000/10/15

On Sat, 14 Oct 2000, Yukihiro Matsumoto wrote:

[#5576] Re: local variables (nested, in-block, parameters, etc.) — Dave Thomas <Dave@...> 2000/10/16

matz@zetabits.com (Yukihiro Matsumoto) writes:

[#5617] Re: local variables (nested, in-block, parameters, etc.) — "Brian F. Feldman" <green@...> 2000/10/16

Dave Thomas <Dave@thomases.com> wrote:

[#5705] Dynamic languages, SWOT ? — Hugh Sasse Staff Elec Eng <hgs@...>

There has been discussion on this list/group from time to time about

16 messages 2000/10/20
[#5712] Re: Dynamic languages, SWOT ? — Charles Hixson <charleshixsn@...> 2000/10/20

Hugh Sasse Staff Elec Eng wrote:

[#5882] [RFC] Towards a new synchronisation primitive — hipster <hipster@...4all.nl>

Hello fellow rubyists,

21 messages 2000/10/26

[ruby-talk:5611] Re: Regexp#matches

From: Aleksi Niemel<aleksi.niemela@...>
Date: 2000-10-16 19:39:05 UTC
List: ruby-talk #5611
Hal stated:
> I do prefer "matches" to "match." 

Me too. As an initiator of this thread :).

> But if conflicts with a prior design decision, it's not worth 
> bothering with, especially since I can define
> "matches" myself anytime I want. Enough said. Let's talk 
> about programming again.

I'm sure we have talked enough about differences of natural languages and
programming languages, namely English and Ruby. To lead the discussion back
to programming and Ruby programming in particular I'd like to continue this
mostly nonsensical issue.

I'm not sure what do you mean when you guess whether "matches" conflicts
with a prior design.

My original idea popped up from confusion. I like to say Regexp#matches, but
it's not defined. I vaguely remembered "exist" has an alias of "exists"
somewhere, so I went on hunting for it.

There are, however, definitions like these in file.c:

    define_filetest_function("exist?", test_e, 1);
    define_filetest_function("exists?", test_e, 1); /* temporary */

So there's only one alias for exists? and even that is marked to be
temporary, 

Browsing sources raised few other issues. One is that there are very few
aliases defined with rb_define_alias:

  Array#size       -> length
  IO#to_i          -> fileno
  Kernel.equal?    -> ==
  Kernel.===       -> ==

All the other are defined like the above, directly pointing two names to one
C-function. So my question is, is there a reason to use one way or another,
or should direct definitions instead of rb_define_alias be favored. 

For me it seems that rb_define_alias is the right one to do the job, and be
more explicit, but in code it seems to be a minority.

The other thing is that current Ruby has quite many aliases. I thought not
to paste them here, but instead I present the incomplete list at the end of
the mail. Most of the aliases lessen the count of surprises in Ruby. It's a
very good thing!!

     *And there are no aliases for 3rd person form*. 

So the Ruby is systematic here, and that's good.

For me it's ok to have purely imperative or infinitive form of verb. At the
same time, it's great Ruby is extendable. So maybe it's time to start
develop English.rb.

Someone said using own twists does not make source code portable. That's
true. And that's the major reason not to use own libraries just for nothing.
This time we have luck. Standard Ruby already has a module English.rb. Now
we just have to make it up to date. 

I guess we could start by adding as many 3rd person forms as necessary, but
no more than that, as potentially we could halt someone's program. My
English is definitely not too good, and I'm going to use that as a lame
excuse not volunteering for the major job - finding and reporting candidate
entries for Englishization :). 

But I can volunteer to gather and commit proposed changed to English.rb. So
if you think this is right way to go, 

1) start finding places for aliases etc.
2) report them to me (privately)
3) I'll propose the gathered changes to the ruby-talk
4) I'll commit the changes which are approved

	- Aleksi


Ps. And now the (almost) oneliner to find aliases, which I split to several
rows for easier understanding, and cut&pasting:

ruby -ne'BEGIN { $h={}; }; 
if $_ =~ /^\s*(rb_)?define_.*?\((.+)\s*"(.+)"\s*,\s*(.+)\s*,/; 
  if $h.has_key? $4; $h[$4]<<$3; else; $h[$4]=[$<.file.path.dup, $3]; end; 
end; 
END { $h.find_all {|k,v| v.size>=3; }.sort {|a, b| a[1] <=> b[1] }.
each {|k,v| printf("%15s %30s: %s\n", v[0], k, v[1,100].join(", "));}; };' 

Call the previous with *.c and you'll get a nice output like following on
unix machine:

        array.c                   rb_ary_equal: ==, ===
        array.c                    rb_ary_aref: [], slice
        array.c            rb_ary_collect_bang: collect!, map!
        array.c                 rb_ary_indexes: indexes, indices
        array.c                    rb_ary_to_a: to_a, to_ary
       bignum.c                  rb_big_modulo: %, modulo
       bignum.c                      rb_big_eq: ==, ===, eql?
       ...


In This Thread

Prev Next