f#是啥语言,和我现在学的c#有啥联系吗?
在vs2019里看到的,8懂9问一下。
首先,f#可以生成IL,也就是说生成的库可以被c#直接调用。另外一些工具可以编译成js,譬如fable。
其次,f#与c#有很大区别,带来很多思维上的转变。下面我通过回忆列举一下,想到一点更新一点,人在外地,手机码字,更新会慢一点。
- f# 有比委托还轻量的函数对象。
- f# 会把尾递归编译成循环。
- f# 没有break关键字,所以很多时候需要使用递归。
- f# 使用对象表达式可以在不手动实现虚类或介面的继承类的情况下产生一个可用对象。
- f#独有的 inline + 静态泛型,突破 .Net 自身动态泛型的局限,可以实现更多抽象代码。
- 计算表达式,功能非常强大,分为标准操作和自定义操作,标准操作就是monad那一套。使用计算表达式可以做各种DSL,而f#自带的seq(IEnumerable)构造语法,以及Linq语法,非同步表达式等都属于计算表达式。
- MailboxProcessor,是f#自带的actor,并发编程时很好用。我常用它来做设备通讯适配器。
- f# 可以定义单位,以及单位间的转换方法,在计算时如果使用单位,可以防止自己用错单位。
- f# 是强类型推导语言,不支持隐式转换。
更多细节可以看:
羊牮:各个编程语言都有哪些「亮点」??www.zhihu.comF#和C#、VB都差不多,都是在.Net平台下的开发语言,网上资料蛮少,国内用的也不多,我算颇为关注的,下面分享下。