|<code>fn:filter</code> can be easily implemented with <code>fn:for-each</code>:
<pre class="brush:xquery">
declare function local:filter($predseq, $seqpred) {
for-each(
$seq,
|<pre class="brush:xquery">
declare function local:filter(
$seq as item()*, $pred as function(item()) as xs:boolean, $seq as item()*
) as item()* {
$seq[$pred(.)]