如何编写此Lisp/Scheme代码?

如何编写此Lisp/Scheme代码?,lisp,scheme,Lisp,Scheme,一种lambda表达式,它接受一个函数(一个参数)和一个数字,并将函数应用于数字的两倍。将函数应用于数字的两倍: (lambda (f x) (f (* 2 x))) 将函数应用于数字两次(这可能是您想要问的): 格雷格的答案是正确的,但你可能会想,你可以如何打破这个问题,自己找到答案。以下是一种方法: ; A lambda expression ;(lambda () ) ; which takes a function (of one argument) and a number ;(l

一种lambda表达式,它接受一个函数(一个参数)和一个数字,并将函数应用于数字的两倍。

将函数应用于数字的两倍:

(lambda (f x) (f (* 2 x)))
将函数应用于数字两次(这可能是您想要问的):


格雷格的答案是正确的,但你可能会想,你可以如何打破这个问题,自己找到答案。以下是一种方法:

; 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)

下面是另一种方法:

编写合同、目的和标题:

;; 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)))
这里是配方的缩写:

(define (apply-double fun num) 
  (fun (* 2 num)))