在Scheme中返回过程值



我尝试调用并获取一个程序的值

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

但是在main中没有返回。

我该如何解决这个问题?我尝试使用let和lambda,但我失败了。

非常感谢。

您可以将p1p2定义为:

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

,则main变为:

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

如果你真的需要使用letlambda,那么这将工作:

(define (main x y)
  (let ((p1 (lambda (thing) 'first))
        (p2 (lambda (thing) 'second)))
    (if (< x y)
        (p1 x)
        (p2 y))))

也许你是认真的?

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

最新更新