A few years ago, I wrote a compiler for FRACTRAN written in Haskell[0] (translated from Common Lisp) with an associated blog post[1]. Using the tagless-final style you can write a simple program like this:
sumTo :: FracComp repr => Integer -> [repr [Rational]]
sumTo n = [addi "c" 0, addi "n" n, while (jge "n" 0) [adds "c" "n", subi "n" 1]]
See also: "Building Fizzbuzz in Fractran from the Bottom Up (2016)" [0]
I'll repost my comment from that thread:
>For some reason this makes me imagine an alternate history sci-fi universe where Pythagoras (famous for his love of fractions) invents FRACTRAN. Then Archimedes builds a mechanical computer to execute those programs, and one of the successors of Alexander The Great puts the computer to use in warfare and conquers the world. Science is accelerated so that nuclear physics are invented by the time Jesus is born...
I played a lot of the original civ as a kid. I'd be super disappointed if I didn't get railroads before 0. rush pyramids, democracy, tons of tiny self supporting towns. That game didn't really offer a way to convert other cities and towns sort of invasion. so I'd inevitably turn evil and conquer the world. Good times.
In principle Minsky Machines are very similar to abacus algorithms. They do seem in the reach of ancient mathematics.
Reducing them to FRACTRAN requires dealing with some VERY big numbers for not a lot of benefit. You’re probably dealing with those on an abacus anyway…
But you could only read them after you unscrolled 50 feet of story about how much they enjoyed the buffet platters at Bel's temple as a kid before watching the sacrifices
I think the world has yet to feel the weight of this great man's contributions. the monstrous moonshines and the freewill theorem seem mind blowing and not very well known at all.
He mentions a CD-ROM version of Society of Mind (https://web.media.mit.edu/~minsky/Voyager.html). I had never heard of it. Does anyone know if the video content from that CD-ROM is available online?
Those are the necessary pre and post processing steps that you need to compute outside of the FRACTRAN system for the fibonacci example from the article.
If you could do those steps the entire process would be self contained, which you should be able to if the claim of yielding all possible computations is correct.
(actually, it is log2(x) that would need to be implemented and not 2^x, but my point remains).
One reasonable design equivalent to FRACTRAN is to do away with the divisibility checks and store an array of counts of prime factors. Then you could put the input in the 5s slot and read the output from the 2s slot without computing the values of these expressions.
[1] https://siraben.dev/2020/02/26/translating_cl.html