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