F# 3.1 语言版发布

  • Jeff Martin
  • 姚琪琳

2013 年 7 月 17 日

话题:语言 & 开发

微软的函数式编程语言 F# 最近随 Visual Studio 2013 预览版发布了 3.1 版本。F# 源自微软英国剑桥研究院,但不管出身如何,现在已被微软完全支持,并通过 Apache 2.0 开源许可进行授权。

F# 小组的一份公告中作者指出,与以前版本着重实现主要特性不同,该版本旨在对语言进行改善。不过在这些改进中,F# 开发者将受益于以下新特性:改进的 F# 类型推断、printf 性能、便携库支持和项目双向兼容。

3.1版的主要新增语言特性:

  • 命名的联合类型字段——现在可以为每个联合类型中的联合字段命名
  • 数组切片扩展——之前的数组切片只能用于同等维度的数组,现在这不是必须的了
  • 为 LINQ 风格的方法增强了类型推断——改进了 F# 中使用函数作为参数的重载方法的类型推断
  • 支持第一个参数为类型参数的 C# 风格的扩展方法——3.1 支持使用扩展方法(this 关键字),比如:static member M<T>(this T input, T other)
  • 在特性和字面量表达式中对常量进行组合——比如,可以使用“+”来连接字符串,或对枚举标记进行按位 OR 操作(|||)

编译器和库的新增部分

  • Printf 的性能——不需要改变原来的代码就能享受明显的速度提升(据说快了 40 倍)
  • 引用形式的调试信息——在 fsc.exe 或 fsi.exe 中使用—quotations-debug 标记
  • 支持.NET 4.5 + Windows Store 便携库——即 F# 可以在构建“.NET 4.5 + Windows Store”时使用 C# 便携程序集,而 F# 也可以反过来为该配置生成程序集

对于在多代小组中使用 Visual Studio 的 F# 开发者来说,一个重大新增特性是支持项目双向兼容。任何面向 F# 3.0 的 F# 项目都能在 VS2012 或 VS2013 中编辑。与此特性一致的是,可以在 F# 项目对话框或解决方案浏览器中指定要开发的应用程序使用哪个版本的 F#。

用户今天就可以通过 VS2013 预览版访问 F# 3.1。需要注意的是,上述 3.1 增强还没有更新到支持非 Windows 平台(OS X、Linux 等)的开源版本中。F# 小组承诺 3.1 特性会在完成后立即发布到 OSS 项目中。

查看英文原文F# Moves Forward in 3.1 Preview Release

语言 & 开发