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