6

関数 (1 つの引数) と数値を取り、その関数を数値の 2 倍に適用するラムダ式。

4

3 に答える 3

9

関数を 2 倍の数に適用する:

(lambda (f x) (f (* 2 x)))

数値に関数を 2 回適用する (これは、質問するつもりだった可能性があります):

(lambda (f x) (f (f x)))
于 2008-10-23T02:38:05.023 に答える
5

Greg の答えは正しいですが、この問題を分解して自分で答えを見つけるにはどうすればよいか考えてみてください。1 つのアプローチを次に示します。

; 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 に答える