Dada la función F # de orden superior (teniendo una función en el parámetro):Llamar a un orden superior F # función de C#
let ApplyOn2 (f:int->int) = f(2)
y la función C#
public static int Increment(int a) { return a++; }
Como llamar en ApplyOn2
con Increment
como parámetro (de C#)? Tenga en cuenta que ApplyOn2
se exporta como Microsoft.FSharp.Core.FSharpFunc<int,int>
que no coincide con la firma Increment
.
El problema no está en hacer referencia a conjuntos. El problema es que ApplyOn2 se exporta como Microsoft.FSharp.Core.FSharpFunc que no coincide con Incremento. –
sthiers
Lo he intentado y funciona: > ClassLibrary1.Class1.Increment ;; Sesión de enlace a 'J: \ Projects \ ClassLibrary1 \ ClassLibrary1 \ bin \ Debug \ ClassLibrary1.dll' ... val it: int -> int = > let ApplyOn2 (f: int-> int) = f (2) ;; val ApplyOn2: (int -> int) -> int > ApplyOn2 ClassLibrary1.Class1.Increment ;; val it: int = 2 –
ssp
@ssp: Este es un ejemplo de invocación de C# desde F #. F # es mucho más indulgente con la función y delega la conversión de tipo, como usted señala, sin embargo, la pregunta es acerca de llamar a F # desde C#. –