2008-10-23 6 views

Respuesta

8

La aplicación de la función al doble del número:

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

aplicación de la función al número dos veces (que es lo que puede haber intención de preguntar): Respuesta

(lambda (f x) (f (f x))) 
5

de Greg es correcta, pero podría pensar en cómo puede separar este problema para encontrar la respuesta usted mismo. Aquí es uno de los enfoques:

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

Aquí está otra manera de acercarse a ella:

redactar un contrato, el propósito y Cabecera:

;; apply-double : function -> number -> any 
;; to apply a given function to double a given number 
(define (apply-double fun num) ...) 

escribir algunas pruebas:

(= (apply-double identity 10) 20) 
(= (apply-double - 15) -30) 
(= (apply-double/7) 1/14) 

Defina la función:

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

Esta es una abreviatura de la receta aquí: http://www.htdp.org/2003-09-26/Book/