F# 的列表是急切的还是惰性的?或者只有 "seq" 在 F# 中被惰性评估

F#'s list is eager or lazy evaluated? Or only "seq" is lazy evaluated in F#

F# 中的哪些元素是延迟求值的,哪些元素是急切求值的? 据我所知,如果 "seq" 是惰性求值,是否意味着 "list" 是急切求值? 我怎么证明?谢谢

是的,列表很急切。您可以尝试在任务管理器中观看它,例如:

#time
let l = List.init 100000000 (fun x -> 0.)
let s = Seq.init 100000000 (fun x -> 0.)
let s2l = s |> Seq.take 10000000 |> Seq.toList