我开始学习F#了.我非常精通C#等编程语言(并且通常使用.NET框架),但函数式编程对我来说是新的.我学得最好的方法是写一本关于这个主题的书并开始阅读 - 所以我抓了一份"专家F#"和"F#科学家".有几次我得到的印象是,由于最近语言的变化,这些书似乎已经过时了 - 没什么太戏剧性的,但它给人一种唠叨的感觉,可能会有更多.
现在F#2.0似乎已经稳定下来,看看"真正的"F#与那些(和类似的)书中所描述的语言版本相比如何变得很好.
所以我的问题是:
编辑: 谢谢大家的答案!
就发行说明而言,我能够在Don Syme的博客上挖掘以下"详细发布说明"帖子,适用于1.9.2之后的F#版本(版本"专家F#"提到的是在书):
我没有找到关于1.9.5版本的任何内容 - 那个曾经存在过吗?
Bri*_*ian 13
我可能无法给出一个完整的答案,但是在过去的两年里,我一直在研究F#的一些事情,因为我已经经历过非常重大的变化......
细微变化:
Seq.to_array现在就是这样Seq.toArray.一些重要的变化async和引用API也是如此.#light 现在是默认值,您可以退出将它放在每个文件的顶部[<OverloadID>]重载成员函数新功能:
comparison和equality限制是Beta2中的新功能.unmanagedRC中的约束.我正在对FSharp最新版本(1.9.9.9)和之前版本(1.9.7.8)进行报道.
我注意到在Array,Seq,Reflect和Quotation模块中添加了许多对checkNonNull的调用.我假设添加了这些调用以保护F#libs不被其他语言(如C#)传递空值.任何见解Brian?函数nullArg抛出ArgumentNullException.
let inline checkNonNull argName arg =
match box arg with
| null -> nullArg argName
| _ -> ()
Run Code Online (Sandbox Code Playgroud)
我完成了所有已更改的fs文件,并且大多数更改都是针对未直接公开的私有函数.唯一可能影响用户的是套装和地图的不同漂亮打印.