在.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 -\u0026gt; int -\u0026gt; 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