0

指定されたパラメータ「フラグ」に従って、Schemeで関数を返す関数を定義するのに問題があります。

    (define con-func
  (lambda(f a flag)
    (cond (= flag 0) (lambda (x) (f (+ x a)))
          (= flag 1) (lambda (x) (f (- x a)))
          (= flag 2) (lambda (x) (f (* x a)))
          (= flag 3) (lambda (x) (f (/ x a)))
          (else (lambda (x) f x)))))

エラーが発生しました:lambda: bad syntax in: lambda <br /> 何が間違っているのですか?ありがとう!

4

3 に答える 3

0

f返されるラムダは、との値をすでに「閉じています」aoperator同様にの値を閉じてみませんか。このような:

(define (con-func f a flag)
  (let ((operator 
         (case flag
          ((0) +)
          ((1) -)
          ((2) *)
          ((3) /)
          (else (lambda (a b) a)))))
    (lambda (x) (f (operator x a)))))
于 2013-03-22T12:35:27.997 に答える
-1

括弧が抜けていました..

正しい構文は次のとおりです。

    (define con-func
  (lambda(f a flag)
    (cond (= flag 0) ((lambda (x) (f (+ x a))))
          (= flag 1) ((lambda (x) (f (- x a))))
          (= flag 2) ((lambda (x) (f (* x a))))
          (= flag 3) ((lambda (x) (f (/ x a))))
          (else (lambda (x) f x)))))
于 2013-03-22T08:33:12.487 に答える