方案高阶函数

时间:2015-09-20 23:54:54

标签: scheme higher-order-functions

(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。我是否正确?

感谢。

0 个答案:

没有答案