写点什么

Visual Studio 2017 迎来 F# 4.1

  • 2017-04-04
  • 本文字数:908 字

    阅读完需:约 3 分钟

三月初发布的 Visual Studio 2017,包含了F# 4.1 和Visual F#工具的更新。F# 4.1 带来了语言层面提升以及与C# 7 的互操作能力,而那些Visual F#工具是支持Roslyn workspaces 的首个版本。

正如上文提到的, F# 4.1 带来了语言层面提升以及与 C# 7 的互操作能力

  • 对 Struct tupple 和 C# value tuples 的支持
  • 对结果集和差别联合(discriminated unions)的 Struct 注解
  • 支持 fixed 关键字
  • 支持数值字面量中使用下划线
  • Caller 信息包含 argument 属性
  • 支持 Result 类型
  • 支持同一文件内的类型和模块相互引用
  • 支持 Byref 返回类型以及 C# 7 ref 返回的方法
  • 异常信息改进
  • list<'T> 实现 IReadonlyCollection<'T>
  • 附加可选模块功能
  • 对静态解析类型参数的改进
  • 编译器性能提升

Visual Sutdio 2017 同时也带来了 Visual F#工具的一个更新版本。其中值得一提的新增功能是对 Roslyn Workspace APIs 的支持:

工作区间就是你的解决方案的动态呈现。它是许多项目的集合。每个项目又是许多文档的集合。工作区间通常与宿主环境参数紧密相关。环境参数是经常改变的与用户输入或操作有关的特性。

像 Visual Studio 这样的集成开发环境使用 Roslyn workspace APIs 来提供多样化的功能。尽管 Roslyn 的编译器部分具体实现为 C#/VB,但许多像 workspaces 这样的 APIs 有更高层次的抽象并且没有与某一种特定的语言绑定。因此,实现这些 API 就意味着一个 IDE 功能可以直接支持 F#而不需要单独做 F#实现。用 Roslyn workspaces APIs 重构的功能包括

  • 查找所有引用
  • 支持导航条
  • 语法和类型在悬停和字符提示时彩色化
  • 智能筛选和字形改进
  • 智能查找支持名字的模糊匹配
  • 编辑器内更好的彩色支持
  • 改善代码缩进
  • 改善断点分辨率
  • 改善定义跳转
  • 支持各种代码修改触发 Lightbulbs
  • 语法高亮
  • 支持 Go to All 功能(ctrl+T)
  • Roslyn-style 行内重命名

来自微软的官方声明列举了许多 F#社区的贡献者,也致谢了一些在 F#编译器、Visual F#工具和语言设计方面作出贡献的社区成员。

查看英文原文: Visual Studio 2017 Brings F# 4.1


感谢张卫滨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-04-04 19:001399

评论

发布
暂无评论
发现更多内容

有趣的SVG、Favicon

devpoint

favicon SVG 7月日更

🐧【Linux技术专题系列】「必备基础知识」一起探索(用户、用户组与文件权限)

洛神灬殇

Linux 操作系统 linux 文件权限控制 7月日更

模块2作业

Tina

Liunx之chown命令

入门小站

Linux

2021年网络安全市场全景图,看看都有哪些企业吧!

郑州埃文科技

hdfs中抽象为block块的好处

五分钟学大数据

hdfs 7月日更

如何通过代码审计从三层内网各种漏洞拿到域控?

网络安全学海

黑客 网络安全 信息安全 安全漏洞 渗透测试·

毕业1年,凭借一份 “漫画” 杀进大厂?他是怎么做到的?原理篇+框架篇

Java架构师迁哥

Spark SQL和DataFrames:内置数据源简介(四)

数据与智能

spark sparksq

架构实战营 模块二 作业

一雄

作业 架构实战营 模块二

Discourse 调整使用不同的表情符号

HoneyMoose

5分钟速读之Rust权威指南(四十二)高级函数

wzx

rust

极光开发者周刊【No.0716】

极光JIGUANG

昇腾AI的三级跳

脑极体

要性能还是要模型?

escray

学习 极客时间 7月日更 如何落地业务建模

【得物技术】零拷贝

得物技术

io 网络 零拷贝 流程 传输

Ping Exporter -- Prometheus

耳东@Erdong

Prometheus ping 7月日更 exporter

JDBC数据库链接的那些事

卢卡多多

JDBC 7月日更

架构实战营第二周作业——微信朋友圈高性能复杂度

发酵的死神

架构实战营

🐧【Linux技术专题系列】「必备基础知识」一起探索(su、sudo等相关身份提权/身份切换机制)

洛神灬殇

Linux linux 文件权限控制 7月日更 Linux身份提权

深入了解Spring之MessageSource

邱学喆

MessageFormat MessageSource MessageSourceAware

Python 实战(五)| 字符串

一个优秀的废人

我佛了!花重金求来的并发编程笔记,颠覆了我以往“正确“的认知

Java 编程 程序员

【通证经济】价值、应用、市场,被掩盖的区块链宝藏!!

CECBC

phabricator + gitlab 强制code review

阿呆

gitlab Code Review phabricator

终于学完了阿里P8大牛推荐的527页Java性能优化实践文档

Java 编程 架构 面试

Python 正则表达式急速入门

喵叔

7月日更

【Flutter 专题】84 图解自定义 ACEWave 波浪 Widget (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

分布式事务最经典的七种解决方案

叶东富

数据库 分布式事务 微服务 TCC Go 语言

Spark :: 源代码(前传)—Spark多线程 :: NettyRpcEnv.ask解读

dclar

spark 多线程 Spark调优 源代码

Visual Studio 2017迎来F# 4.1_.NET_Pierre-Luc Maheu_InfoQ精选文章