我尝试调用并获取一个程序的值
(define main (x y) ((< x y) (p1 x) (p2 y)))
(p1 x) returns 'first, (p2 y) returns 'second
但是在main中没有返回。
我该如何解决这个问题?我尝试使用let和lambda,但我失败了。
非常感谢。
您可以将p1
和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)))