Linear type入門

Linear type入門

來自專欄 Industrial functional programming47 人贊了文章

linear type是類型系統的一種擴展,可以實現在編譯期指定資源必須且只能使用一次,另外LT的特性也表達了量子力學不可複製原理。為了在Haskell中實現LT,我們只需要引入一個新的linear函數類型:? 。這個新類型和原來的普通函數類型 -> 很相似,但是在定義一個a?b的linear函數時,其參數a必須使用一次,即給定a計算b時,a必須要使用而且只能用一次。比如下面這2種都無法通過編譯:

fst :: (a,b) ? afst (x,_) = xdup :: a ? (a,a)dup x = (x,x)

Linear typesmake performance more predictable?

www.tweag.io

另外,現在很火的Rust是affine type system(move semantics),與Linear type同屬Substructural type system,不同之處是參數最多使用一次,而不是必須使用一次。

The Pain Of Real Linear Types in Rust?

gankro.github.io


推薦閱讀:

如何找一份haskell的工作?
為什麼要學習函數式編程?因為如果你手裡只有鎚子,看什麼都像釘子
Agda 中的 coinductive data type
為什麼絕大多數 Haskell 的書籍都不講 FFI ?
喬波今天學了點定理證明

TAG:類型系統 | Haskell | rust |