My mini array engine in Clojure is coming on apace, and another day should give me the functionality I want to right now.
I've been checking my specification against the behaviour of J, and this has had an interesting side effect.
I've tried to learn J several times. Each time I quickly mastered the basics but then hit a brick wall in understanding.
This time around the wall has collapsed.
The concept I was missing was that of a train of verbs. A verb in J is another name for a function. A train is an isolated sequence of verbs. For some reason I couldn't grasp why these were needed or how they worked, but now the need and its solution seem obvious. As a result I can read (and write) programs in J which previously eluded me.