我开始学习F#。我非常精通C#等编程语言(并且通常使用.NET框架),但函数式编程对我来说是新的。我学得最好的方法是写一本关于这个主题的书并开始阅读 - 所以我抓了一份“专家F#”和“F#科学家”。有几次我得到的印象是,由于最近的语言变化,这些书似乎已经过时了 - 没什么太戏剧性的,但是它给人一种唠叨的感觉,可能会有更多。
现在F#2.0似乎已经稳定下来,看看“真正的”F#与那些(和类似的)书籍中描述的语言版本相比如何变得很好。
所以我的问题是:
编辑: 谢谢大家的答案!
就发行说明而言,我能够在Don Syme的博客上挖掘以下“详细发布说明”帖子,适用于1.9.2之后的F#版本(版本“专家F#”作为版本提及在书中使用):
我没有找到关于版本1.9.5的任何内容 - 那个版本是否存在?
答案 0 :(得分:13)
我可能无法给出一个完整的答案,但是在过去的两年中我曾经在F#上做过一些非平凡的变化,这些事情都浮现在脑海中......
小改动:
Seq.to_array
是
现在Seq.toArray
。对async
和引用API也进行了一些重大更改。#light
现在是默认设置,您可以退出将其放在每个文件的顶部[<OverloadID>]
来重载成员函数新功能:
答案 1 :(得分:6)
我正在对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
| _ -> ()
我完成了所有已更改的fs文件,大部分更改都是针对未直接公开的私有函数。唯一可能影响用户的是套装和地图的不同漂亮打印。
答案 2 :(得分:4)