在Scheme中返回程序值

在Scheme中返回程序值,scheme,procedure,Scheme,Procedure,我尝试用下面的代码调用并获取一个过程的值 (define main (x y) ((< x y) (p1 x) (p2 y))) (p1 x) returns 'first, (p2 y) returns 'second (定义主(xy)((

我尝试用下面的代码调用并获取一个过程的值

(define main (x y)  ((< x y) (p1 x) (p2 y)))
(p1 x) returns 'first, (p2 y) returns 'second
(定义主(xy)((
然而,总的来说,没有什么可以回报的

我怎样才能解决这个问题?我尝试使用let和lambda,但失败了


非常感谢

也许你是这个意思

(define (main x y)  (if (< x y) (p1 x) (p2 y)))
(定义(主x y)(如果(
也许你是这个意思

(define (main x y)  (if (< x y) (p1 x) (p2 y)))
(定义(主x y)(如果(
您可以将
p1
p2
定义为:

(define (p1 thing) 'first)
(define (p2 thing) 'second)
然后
main
变成:

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

您可以将
p1
p2
定义为:

(define (p1 thing) 'first)
(define (p2 thing) 'second)
然后
main
变成:

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

实际上我用的是如果没有变化,它仍然不能返回值。。对于每种情况,我也使用cond。。但是我不能得到f和t。。此外,它们不是f和t。它们是元素。为了更好地理解什么是
p1
p2
,我改变了过程的输出?张贴代码。什么是
x
,什么是
y
?给出一个输入示例,给出一个输出值的确切示例。谢谢奥斯卡。。一开始你是对的。。p1和p2定义错误,因此无法获取值。现在正在工作。实际上我使用的是如果没有任何变化,它仍然无法返回值。。对于每种情况,我也使用cond。。但是我不能得到f和t。。此外,它们不是f和t。它们是元素。为了更好地理解什么是
p1
p2
,我改变了过程的输出?张贴代码。什么是
x
,什么是
y
?给出一个输入示例,给出一个输出值的确切示例。谢谢奥斯卡。。一开始你是对的。。p1和p2定义错误,因此无法获取值。现在正在工作。