gpt4 book ai didi

optimization - F# 中是否所有 lambda 参数都自动内联

转载 作者:行者123 更新时间:2023-12-04 00:47:22 25 4
gpt4 key购买 nike

post来自 F# News 指出 F# 可以内联作为参数传递的函数。总是这样吗?它会自动发生吗?

最佳答案

答案是否定的。如果你有一个像下面这样的函数,lambdas 不会被内联。在以下代码中,使用 FSharpFunc<,>.InvokeFast() 调用 lambda。

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函数被内联,但 lambda 也被内联。我使用 .NET Reflector 来确认这一点。

关于optimization - F# 中是否所有 lambda 参数都自动内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6458903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com