F#创建者Don Syme谈F#设计原则

栏目: ASP.NET · 发布时间: 7年前

内容简介:F#创建者Don Syme谈F#设计原则

在.Net Fringe 2016大会上,F#创建者Don Syme 谈了 他对F#现状的看法以及F#的二元性。F#是以一个为面向对象语言构建的运行时为基础构建的函数式语言。

F#是2010年发布的,遵循开源许可协议。F#比.Net更早地踏上了开源之路,C#和.Net在2015年才开源。将F#开源主要是为了增加其公信力。那时,一门语言想要得到开发人员和企业的重视,开源是必须的。

为.NET带来一门新语言的计划由来已久。函数式编程语言是隔离的,运行在自己的VM里。互操作标准(C调用、COM、CORBA、XML)让语言集成变得困难。

F#的做法是使用一个已经被广泛采用的运行时,并在必要时采取折衷的办法。该语言在设计时就考虑了互操作性。像Scala和Swift这类较新的语言经常采用这种方法。

F#的做法是将对象包含进来,让它们适应于面向表达式的类型化函数式编程。虽为函数式语言,但F#也支持类、抽象类和接口。

//类定义
type Vector2D (dx:double, dy:double) =
    let d2 = dx*dx + dy*dy //对象固有属性
    // 导出属性
    member v.DX = dx 
    member v.DY = dy
    member v.Lenght = sqrt d2
    member v.Scale(k) = Vector2D (dx * k, dy * k) // 导出方法

F#支持类、接口和抽象类。它还有一个值得注意的新增特性对象表达式,让开发人员可以匿名定义上述类型。

type IMathExample =
    // 抽象方法
    abstract member Add: int -> int -> int

    // 抽象不可变属性
    abstract member Pi : float

// 使用对象表达式的接口实现
let obj = 
  { new IMathExample with
    member this.Add x y = x + y
    member this.Pi = 3.14 }

由于F#语言几年来一直在发展,所以Syme简单介绍了该语言的现状:

  • 开放、跨平台、中立、独立;
  • F#接受贡献;
  • 由非盈利性组织 F#软件基金会 管理;
  • 通过Xamarin提供移动开发和 工具 支持;
  • 由来自微软的Visual F#工具提供Windows和Azure支持;
  • F#编译服务 是许多F#工具项目的基础;
  • F# 4.1的开发正在进行中。

在谈及语言独立性时,Syme创造了一个新术语。他将“拟态独立性(mimetic independence)”定义为一种能力,借助这种能力可以将一种技术定义为独立于另外一种技术、联盟或既定利益的理念。虽然F#实现了拟态独立性,但我们仍然必须承认微软对此作出的巨大贡献。作为一个反例,Visual Basic就不符合这个条件,因为它完全依赖于微软。

查看英文原文: Don Syme Presents F# Design Principles at .Net Fringe


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms on Strings, Trees and Sequences

Algorithms on Strings, Trees and Sequences

Dan Gusfield / Cambridge University Press / 1997-5-28 / USD 99.99

String algorithms are a traditional area of study in computer science. In recent years their importance has grown dramatically with the huge increase of electronically stored text and of molecular seq......一起来看看 《Algorithms on Strings, Trees and Sequences》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试