我尝试使用下面的代码调用并获取过程的值
(define main (x y)  ((< x y) (p1 x) (p2 y)))
(p1 x) returns 'first, (p2 y) returns 'second
但是主要没有什么可以返回的。
我该如何解决这个问题?我尝试使用 let 和 lambda 但我失败了。
非常感谢。
您可以将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))))
    也许你是这个意思?
(define (main x y)  (if (< x y) (p1 x) (p2 y)))