0

以下のコードでプロシージャを呼び出して値を取得しようとしています

(define main (x y)  ((< x y) (p1 x) (p2 y)))
(p1 x) returns 'first, (p2 y) returns 'second

ただし、主に返すものはありません。

どうすればこれを解決できますか? let と lambda を使用しようとしましたが、失敗しました。

どうもありがとう。

4

2 に答える 2

2

p1andを次のように定義しますp2

(define (p1 thing) 'first)
(define (p2 thing) 'second)

そして次のようにmainなります。

(define (main x y)
  (if (< x y)
      (p1 x)
      (p2 y)))

本当に使用する必要がletありlambda、これが機能する場合:

(define (main x y)
  (let ((p1 (lambda (thing) 'first))
        (p2 (lambda (thing) 'second)))
    (if (< x y)
        (p1 x)
        (p2 y))))
于 2013-04-30T23:53:07.247 に答える