Adventures in F#--Function Type Inference
Consider this F#:
let Reverse a b = b a
This means: given a and b (whatever they may be) call b as a function with 'a' as the argument. When I compile this and look at it under reflector I get:
public static U Reverse <T, U>(T a, FastFunc<T, U> b)
{
return b.Invoke(a);
}
Its interesting to me that F# is able to contextually deduce that b must be a function call.
That FastFunc<T,U> is not a delegate but it seems to represent a similar concept. I'm not sure why its not a delegate and this seems to limit interoperability with languages (like C#) which use delegates to represent this concept, note to self to investigate this later.
Another thought: That FastFunc is an abstract class means that the implementation of the function need not exist until its called. I don't think this is possible with straight delegates.
This posting is provided "AS IS" with no warranties, and confers no rights.