在Visual Studio 2015 Preview中,您可以从三个目标F#运行时中选择:
定位较新版本有什么好处吗?他们是否允许您访问其他API?如果是这样,哪些?如果我们能够生成一份全面的清单,那就太好了。
答案 0 :(得分:9)
不幸的是,我不认为有一个完整的列表,你可以从引用F#4.0获得。但是,看the list of new things on CodePlex,有一些明显的问题:
List
,Seq
和Array
模块中的许多新功能(以便在可能的情况下,所有模块都提供相同的功能)
其他一些图书馆添加(在表格中搜索"图书馆"),包括tryUnbox
,isNull
,ofObj
,{{ 1}},toObj
,ofNullable
以及toNullable
用于非通用任务
在语言功能之外,对quoting arguments of method calls的支持绝对是需要新F#核心的支持。
另外,我不太确定其中哪些实际上在预览中 - 我怀疑其中大部分都不是。
答案 1 :(得分:3)
我能够为FSharp.Core的公共表面区域生成3.1和4.0的新增加的完整列表。我用来生成差异列表的代码包含在内,可以重新使用。
答案 2 :(得分:2)
查看公共表面区域中的增量的快速方法是将代码从FSharp.Core public surface area unit tests中删除: - )
使用以下代码创建一个控制台应用程序,并针对您感兴趣的每个版本重建/重新运行它。它将转储该版本中的所有公共API。您可以使用windiff或您选择的差异工具来比较版本之间的API。
open System.Reflection
let file = typeof<int list>.Assembly.Location
let asm = Assembly.ReflectionOnlyLoadFrom(file)
let referenced = asm.GetReferencedAssemblies()
for ref in referenced do
Assembly.ReflectionOnlyLoad(ref.FullName) |> ignore
let types = asm.GetExportedTypes()
let values =
types
|> Array.collect (fun t -> t.GetMembers())
|> Array.map (fun v -> sprintf "%s: %s" (v.ReflectedType.ToString()) (v.ToString()))
|> Array.sort
|> String.concat "\r\n"
// dump to a file or print to console
printfn "%s" values