The version you have put in Rosettacode is good, I have just added some missing tests at the beginning of the UTM constructor.

Annotations like this are reminders of DMD bugs/limits that hopefully we'll be fixed/lifeted:
foreach (/*const*/ s, const rule; aa) {


While this annotation:
alias State = char; // Typedef?

means that in a stronger typed entry maybe State should be (but we have also to benchmark if this doesn't decrease the program performance for a successive bigger Busy Beaver machine):
alias State = Typedef!char;


This little program is pedagogically very good at showing the difference between weak and strong static typing. In a strongly static typed version all (or most) of those run-time tests are not needed.

Bye,
bearophile

Reply via email to