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!