I noticed the srfi-1 spec says delete and delete! call their predicate (proc x e[i]), but srfi/srfi-1.scm has it the other way around. The spec gives an example (delete 5 lst <) to remove all elements greater than 5 from lst, which doesn't work with the present code. Unless anyone knows a reason for this difference I'd suggest for head and stable, * srfi-1.scm (delete): Fix predicate arg order to match srfi-1 spec. * tests/srfi-1.test (delete, delete!): Test predicate call arg order.