高阶程序 - 对构造(缺点,汽车,cdr)

时间:2012-11-26 13:55:12

标签: scheme procedure cons cdr

我需要创建这个程序: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 有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

首先,my-cons中有一些无关的代码似乎不属于此处。这就足够了:

(define my-cons
  (lambda (x y)
    (lambda (a)
      (if a x y))))

(另外,您不需要将布尔值与#t#f进行比较 - 它可以在if中使用。)

现在你有my-cons返回一个函数,该函数返回xy,具体取决于它的结果。您可以在实施my-carmy-cdr

时使用它
(define my-car
  (lambda (c)
    (c #t)))

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