Scheme 高阶程序-成对构造(cons、car、cdr)

Scheme 高阶程序-成对构造(cons、car、cdr),scheme,procedure,cons,cdr,Scheme,Procedure,Cons,Cdr,我需要创建以下程序:我的cons、我的汽车、我的cdr in方案 它应该是这样工作的: (定义p1(我的cons 3 8)) (p1#t) 三, (p1#f) 八, (我的车p1) 三, (我的cdr p1) 八, 现在,我只有这个: (定义我的缺点 (λ(x y) (反对党x y) (让((一辆汽车(cons x y))) 但在这段代码中,我不能在已定义的p1上应用cons或cdr 有人能帮我吗?首先,我的缺点中有一些无关的代码,似乎不属于这里。这就足够了: (define my-cons

我需要创建以下程序:我的cons、我的汽车、我的cdr in方案

它应该是这样工作的:

(定义p1(我的cons 3 8))

(p1#t)

三,

(p1#f)

八,

(我的车p1)

三,

(我的cdr p1)

八,

现在,我只有这个:

(定义我的缺点

(λ(x y)

(反对党x y)

(让((一辆汽车(cons x y)))

但在这段代码中,我不能在已定义的p1上应用cons或cdr
有人能帮我吗?

首先,我的缺点中有一些无关的代码,似乎不属于这里。这就足够了:

(define my-cons
  (lambda (x y)
    (lambda (a)
      (if a x y))))
(此外,您不需要将布尔值与
#t
#f
进行比较-它在
中可以按原样使用。)

现在您有了
my cons
,它返回一个函数,该函数根据其分段返回
x
y
。您可以在实现
my car
my cdr
时使用该函数:

(define my-car
  (lambda (c)
    (c #t)))

(define my-cdr
  (lambda (c)
    (c #f)))

哦,这很好,我想这会更难:)但是切换过程呢?我有以下形式:
(定义切换(lambda p(cons(cdr p)(car p)))
你有什么问题吗?如果
p1
是使用
my cons
定义的,那么它就不能用标准
car
cdr
解包;你必须在上面使用
my car
my cdr
。请发布控制台日志,说明你是如何使用它的,以及你遇到了什么错误。哦,对不起,软件itch proc还可以,但是后面的行。我正在尝试以下操作:
(定义p1(我的cons 3 8))(定义p2(开关p1))(我的车p2)
,错误消息:application:不是一个过程;应该是一个可以应用于给定参数的过程:(8.3)参数…:\t
(define my-car
  (lambda (c)
    (c #t)))

(define my-cdr
  (lambda (c)
    (c #f)))