我很好奇列表模块/类型如何在F#中工作,具体是它优化了这个吗?F#中的列表如何实现?
let xs = ["1"; "2"; "3"]
let ys = "0"::xs
let zs = ["hello"; "world"]@xs
我已经看过一些源https://github.com/fsharp/fsharp/blob/68e37d03dfc15f8105aeb0ac70b846f82b364901/src/fsharp/FSharp.Core/prim-types.fs#L3493似乎是相关领域。
我想知道,如果xs
使ys
时被复制。
我本来以为很容易,只是指向现有的列表,如果你只是负面因素的元素。
如果您串联我想这可能是不可能的,因为它需要变异列表的最后一个元素指向下一个?
如果有人能注释/从FSharp.Core的代码片段,将是理想的。
当创建''ys'是xs'不深复制(这是不可改变的单链表的好处之一) – FuleSnabel
你知道我在哪里能找到这个特定的F#的任何信息? – Willl