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平台下的開發語言,網上資料蠻少,國內用的也不多,我算頗為關注的,下面分享下。