I’m making some rather … pervasive changes to uLisp, and for obvious reasons want to sanity-check that things are still working every now and then. So I ran the 32-bit test suite on one of the ARM boards I have to hand. (I’ve managed to make uLisp fifty bytes or so too large for the ATmega328P. I’m working on it!)
Anyway. I get errors on two specific tests:
(aeq 'mapcan '(1 2 3 . 4) (mapcan (lambda (x) x) '((1) (2) (3 . 4))))
(aeq 'mapcan '(2 3 . 4) (mapcan (lambda (x) x) '(nil (2) (3 . 4))))
The error itself is a little curious, though: Error: 'mapcan' result is not a proper list: 4
Correct me if I’m wrong, but aren’t those tests explicitly building a dotted list?
A little off-topic, but hilarious: The error is generated by a line of code that seems otherwise unneeded. I commented it out, and the tests work. The error string is only ever used there, and now the compiler doesn’t bother including it in the image. And now my code does fit on the Arduino Uno. Yay!