I did run it back in the day, it works, I think it just happens to assume a 32 bit OS. You can fix the gist by changing this:
I *ma(n){ R (I*) malloc(n*4); }
to: I *ma(n){ R (I*) malloc(n*8); }
Note that it's a very tiny interpreter for a very tiny simple language - it does not have any error handling (it still WILL segfault if you enter "incorrect" programs, where "correct" is whatever doesn't crash the interpreter :)), the letters a-z are the only available variable names etc., this is why it is so short. Once you get over the APLish way of writing the C code, and once you deduce what the operators are intended to do, it's a pretty straightforward C program.Here is a sample session:
a=1,2,3
3
1 2 3
b=4,5,6
3
4 5 6
a+b
3
5 7 9
This piece of the gist is the "symbol table" for respectively binary and unary operators, you can use it to get started understanding the language: C vt[] = "+{~<#,";
A(*vd[])() = { 0, plus, from, find, 0, rsh, cat},
(*vm[])() = { 0, id, size, iota, box, sha, 0};