Jos van Uden:

I have the rcrpg working, but I want to test it some more.

Good. Adding a bit of unittesting is acceptable, I think.


I'm not very happy
with the alias function, it accepts just about any input, it can put the program in an invalid state.

I presume this is a design bug shared with the original Python code.

You have also fixed a translation bug of mine with remove(). I don't like that function. In past I did another mistake (in another program), forgetting to assign its result back to the array.


There was a bug by the way in the Python code, that slowed me down a bit.

D static type system asks for more coding work, but it has caught very quickly that bug of this line of Python code:

tokens[0] = aliases[tokens[0]]

Dynamic typing has some advantages and in some cases it's handy, but it has some disadvantages too. On the other hand I think that Python code was not well tested; Python unittesting is able to catch most of similar bugs.

I think we should fix the Python entry too (or at least add a note in the Talk page).


As for the "getattr", I've hacked a CTFE loop together that writes out if statements. I'm not sure how robust it is.

I think in normal D code you don't catch Throwable, but maybe in this case it's OK.


http://dpaste.dzfl.pl/5e6b824e

The D code has lot of imports because Python has a ton of built-in things.

I have shortened the lines to about 72 chars max, and reformatted the code a bit. If you like it and you have a Rosettacode account, you can put it there yourself (otherwise I'll do it myself). If later you find bugs or you want to change something, there's always the possibility to modify it on the site.

http://dpaste.dzfl.pl/6778053f

In practice at the moment I am maintaining all the D entries of Rosettacode. I keep the coding style uniform, but sometimes I change some parts of such style on purpose to show different ways to use D, or specific things. Several Rosettacode solutions have more than one D entry, like when there is a very short and high-level entry and a longer and low level entry that's faster.

Bye,
bearophile

Reply via email to