Hi dean Do you really need to load all the stuff into RAM? Working in stream, e.g. with (in) (out) and (char) (called without arguments) or (rd) (binary read) needs slightly different software design, but would most likely be faster.
Also, (chop) is a rather expensive function (because it has to reserve new memory), probably you can easily improve performance by chopping all input once during initial reading, and then store the content as lists instead of strings which you chop in every filter function. Maybe you can identify other areas where you could keep some stuff in variables instead of doing the same thing multiple times. Then make sure that you don't have any code multiple times lying around, refactor common steps into functions. In picolisp the source code is exactly the same structure as the RAM representation and execution flow, it follows that shorter code usually results in better performance. I hope this helps, good luck and have fun! Regards, beneroth