It looks like the only part of the (process ...) procedure that does any significant allocation is the (string-split line "\t") expression, which will allocate a string object and linked list node for for every token. However you don't really need those objects; all you need is to see whether the ref field starts with * and in that case print the id field and nothing else.
It may be faster to use a regular expression ( http://wiki.call-cc.org/man/4/Unit%20irregex ) to search for a matching id field, and if and only if a match is found, retrieve the matching id field with irregex-match-substring. Also note that I think you can simplify your main loop down to: (for-each-line process in) (write-line "done" (current-error-port)) using the utils unit ( http://wiki.call-cc.org/man/3/Unit%20utils#for-each-line ). Kevin Wortman _______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
