簡體   English   中英

多態類型有什么用途?

[英]What are uses of polymorphic kinds?

多態類型是Haskell類型系統的擴展,由UHC 支持 ,允許

data A x y = A (y x)

鍵入(kinded?)為a -> (a -> *) -> * (a- a -> (a -> *) -> * 它們有什么用?

一個可能的用法示例是使用圓錐形TypeCompose組成無點樣式的monad變壓器。

type MyT = StateT Foo :. MaybeT :. ContT Bar

(僅作為示例,我不知道這些foo和bar會做什么。。)

代替:

type MyT m = StateT Foo (MaybeT (ContT Bar m))

(這將具有相同的結果除了newtype -wrappers)

當前,您需要復制不同種類的組合器代碼,並且此擴展取消了重復,並允許使用一段代碼來全部統治它們。

在GHC中添加多態類型

這個問題的背景通常是建立一種更具表現力的種類系統動機

也就是說,向Haskell添加多態類型的總體原因是為了改善類型級別編程的體驗。 當前,Haskell中的類型級別編程以基本上沒有類型的“ 種類 ”級別進行。 通常,更豐富的一種語言將使在Haskell中進行類型級別的編程更加容易。

一個更具體的示例是從SYB樣式的泛型( 引用 )中刪除(動態)可類型化約束,並改善對更高種類的泛型編程的總體支持。

當然,它們對於定義可以任意任意操作數據構造函數的函數很有用!

一個具體的示例可能是一個函數,該函數給定具有任意Arity的數據構造函數,然后返回一個將給定構造函數包裝在Some()中的新數據構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM