Linear type入門
08-20
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
另外,現在很火的Rust是affine type system(move semantics),與Linear type同屬Substructural type system,不同之處是參數最多使用一次,而不是必須使用一次。
The Pain Of Real Linear Types in Rust推薦閱讀:
※如何找一份haskell的工作?
※為什麼要學習函數式編程?因為如果你手裡只有鎚子,看什麼都像釘子
※Agda 中的 coinductive data type
※為什麼絕大多數 Haskell 的書籍都不講 FFI ?
※喬波今天學了點定理證明