我需要创建这个程序:my-cons,my-car,my-cdr in Scheme。
它应该像这样工作:
(定义p1(my-cons 3 8))
(p1 #t)
3
(p1 #f)
8
(我的车p1)
3
(my-cdr p1)
8
现在,我只有这个:
(定义my-cons
(lambda(x y)
(cons x y)
(let((a(car(cons x y))))
(lambda (a) (if (equal? a #f) y x)))))
但是在这段代码中我不能在定义的p1上应用my-cons或my-cdr 有人可以帮我这个吗?
答案 0 :(得分:1)
首先,my-cons
中有一些无关的代码似乎不属于此处。这就足够了:
(define my-cons
(lambda (x y)
(lambda (a)
(if a x y))))
(另外,您不需要将布尔值与#t
或#f
进行比较 - 它可以在if
中使用。)
现在你有my-cons
返回一个函数,该函数返回x
或y
,具体取决于它的结果。您可以在实施my-car
和my-cdr
:
(define my-car
(lambda (c)
(c #t)))
(define my-cdr
(lambda (c)
(c #f)))