一个 lambda 表达式,它接受一个函数(一个参数)和一个数字,并将该函数应用于两倍的数字。
dave
问问题
847 次
3 回答
9
将函数应用于两倍的数字:
(lambda (f x) (f (* 2 x)))
将函数应用于数字两次(这可能是您想要问的):
(lambda (f x) (f (f x)))
于 2008-10-23T02:38:05.023 回答
5
Greg 的答案是正确的,但您可能会考虑如何分解这个问题以自己找到答案。这是一种方法:
; A lambda expression
;(lambda () )
; which takes a function (of one argument) and a number
;(lambda (fun num) )
; and applies the function
;(lambda (fun num) (fun num))
; to twice the number
;(lambda (fun num) (fun (* 2 num)))
((lambda (fun num) (fun (* 2 num))) + 12)
于 2008-10-23T03:39:03.247 回答
2
这是另一种方法:
编写合同、目的和标题:
;; apply-double : function -> number -> any
;; to apply a given function to double a given number
(define (apply-double fun num) ...)
编写一些测试:
(= (apply-double identity 10) 20)
(= (apply-double - 15) -30)
(= (apply-double / 7) 1/14)
定义函数:
(define (apply-double fun num)
(fun (* 2 num)))
这是这里食谱的缩写:http: //www.htdp.org/2003-09-26/Book/
于 2008-10-23T03:50:43.427 回答