Schemeに関して質問です。
与えられた数と演算子から、リストを狭めるfilter関数を作れと言われています。
例えば(list 3 7 4 1 6)に対して、数字5と演算子>=が与えられれば、リストの中から
5以上の要素だけを抜き出した(list 7 6)を返す、というものです。ここで、
(define (reduce op base L)
 (cond
  [(empty? L) base]
  [else (op (first L)
        (reduce op base (rest L)))])) というreduce関数を使えと指示がありました。
reduce関数の挙動はLに(list 1 2 3)を入れれば(op 1 (op 2 (op 3 base)))となる感じです。

そこで私は局所関数fを用いて以下のように定義しました。
(define (filter rel_op L t)
 (local ((define (f n L)
      (cond
       [(rel_op n t) (cons n L)]
       [else L]))))
 (reduce f empty L)) ……(☆)

これに対して (filter >= (list 3 7 4 1 6) 5) と実行すると、
filter関数の挙動は、(f 3 (f 7 (f 4 (f 1 (f 6 empty)))))となるので、あとは関数fに従って(list 7 6)が
返ってくる筈なのですが、(☆)の行で、関数に対して無駄な部分がある というメッセージと共に
エラーが出ます。何処が間違っているのか、ご教授頂けないでしょうか。