(define (pair a b)
(lambda (f) (f a b)))
(define (fst x) .... )
'fst'应该在我打电话时返回一个(fst(对1 2))
我知道函数(f a b)在我调用时存储在'x'中(fst(对1 2))如何提取'a'?有小费吗?
我尝试使用(车载x)和(cdr x),但x显然不是列表。
编辑: 我最终得到了这个:
(define (fst x) (x (lambda (p q) p)))
(define (snd x) (x (lambda (p q) q)))
我对方案编程很新,所以我仍然试图理解编译器的工作原理。所以,从中我了解到如果在函数之后使用“lambda”关键字。所以像(x(lambda(p q)),这实际上是从x中提取p和q。我是否正确?
感谢。