Pregunta

¿Es posible pasar una referencia a una función a otra función en F#?Específicamente, me gustaría pasar funciones lambda como

foo(divertido x -> x ** 3)

Más específicamente, necesito saber cómo me referiría a la función pasada en una función que escribí yo mismo.

¿Fue útil?

Solución

Sí, es posible.El manual tiene este ejemplo:

> List.map (fun x -> x % 2 = 0) [1 .. 5];;

val it : bool list
= [false; true; false; true; false]

Otros consejos

Las funciones son ciudadanas de primera clase en F#.Por lo tanto, puedes pasarlos como quieras.

Si tienes una función como esta:

let myFunction f =
    f 1 2 3

y F es la función, entonces el valor de retorno de mifunción es F aplicado a 1, 2 y 3.

Pasar una función lambda a otra función funciona así:

Supongamos que tenemos una función trivial propia de la siguiente manera:

let functionThatTakesaFunctionAndAList f l = List.map f l

Ahora puede pasarle una función lambda y una lista:

functionThatTakesaFunctionAndAList (fun x -> x ** 3.0) [1.0;2.0;3.0]

Dentro de nuestra propia función functionThatTakesaFunctionAndAList puedes referirte a la función lambda como f porque llamaste a tu primer parámetro f.

El resultado de la llamada a la función es por supuesto:

float list = [1.0; 8.0; 27.0]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top