Ответ - нет. Если у вас есть функция, подобная следующей, лямбды не вставляются.
В следующем коде лямбды вызываются с помощью FSharpFunc<,>.InvokeFast()
let fold f s l =
let rec loop acc l =
match l with []->acc |h::t->loop (f acc h) t
loop s l
let list = [1;2;3;4]
list|>fold (fun acc x->x+acc) 0|>printfn "%d"
list|>fold (fun acc x->x*acc) 1|>printfn "%d"
Но если вы отметите fold
функцию как inline
, ситуация изменится. Не только функция fold
становится встроенной, но и лямбда-выражения. Я использовал .NET Reflector, чтобы подтвердить это.