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? ...