On Tue, 17 Apr 2001, ts wrote: > >>>>> "M" == Mathieu Bouchard <matju / sympatico.ca> writes: > M> I think the most difficult part of writing a "Ruby for Java" interpreter > M> is getting the parser right. > I don't agree with you. The most difficult part is to have a j*v* > implementation which do *exactly* the same thing that the C > implementation. Well Dave wrote a test suite for Ruby, that did a very good job of making MetaRuby possible; Jruby's base classes could be written according to a similar process -- if you wish not to reuse MetaRuby itself that is. About differences: given that they are not gratuitous, then a list of them can be built and used as documentation, and unless you really want to shoot yourself in the foot, you should keep incompatible ones to a strict minimum, keep the list up to date, and seek to discover most unknown differences there may be. > I don't think that it's a good idea to have multiple implementations with > subtle difference between these implementations, like a P language ... Well if those subtle differences are due to a lack of documentation of 1st implementation, then the discovery of a subtle difference is a situation that begs for better documenting the 1st implementation, or fixing the bug in it, or smoothing the feature's interface details. In any case you end up with a better-defined system; you also break code that uses undocumented properties of the interpreter, and that's good too, because once you fix it you have better-defined code. For example... I invite you to go at: http://www.rubycentral.com/book/ref_c_array.html#slice_oh and tell me: 1. Is there an error in the doc of Array#slice! ? 2. What is that error ? 3. Why is it documented on http://www.pragmaticprogrammer.com/ruby/errata/errata.html ? 4. How did I find the bug? 5. Why shouldn't have I reimplemented Array, given that this is what caused me to report that bug and that similar events are very likely to happen in the future like they did in the past? 6. Why should everyone use the builtin Array instead of my Array given that there are things mine can do that the former can't? -- or why is it not a good to want to run Ruby code inside a machine called the JVM, without having to emulate a more conventional "C machine" inside it? Well, I don't want to force you to change your mind... matju