Pergunta

É possível passar de uma referência a uma função para outra função em F#?Especificamente, eu gostaria de passar lambda funções como

foo(fun x -> x ** 3)

Mais especificamente, eu preciso saber como eu iria referir-se ao passado de função em uma função que eu escrevi a mim mesmo.

Foi útil?

Solução

Sim, é possível.O manual tem este exemplo:

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

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

Outras dicas

Funções de primeira classe de cidadãos em F#.Portanto, você pode passá-los em torno de como você deseja.

Se você tiver uma função como esta:

let myFunction f =
    f 1 2 3

e f é função, em seguida, o valor de retorno de myFunction é f aplicada a 1,2 e 3.

Passando uma função lambda para outra função funciona assim:

Suponha que nós temos um trivial função de nossas próprias da seguinte forma:

let functionThatTakesaFunctionAndAList f l = List.map f l

Agora você pode passar uma função lambda e uma lista para ele:

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

No interior de nossa própria função functionThatTakesaFunctionAndAList você pode apenas referir-se à função lambda como f porque você chamou o seu primeiro parâmetro f.

O resultado da chamada de função é do curso:

float list = [1.0; 8.0; 27.0]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top