多態種是一個擴展,Haskell的類型系統,通過supported UHC,允許多態類型的用途是什麼?
data A x y = A (y x)
被輸入(kinded?)爲a -> (a -> *) -> *
。它們對於什麼有用?
多態種是一個擴展,Haskell的類型系統,通過supported UHC,允許多態類型的用途是什麼?
data A x y = A (y x)
被輸入(kinded?)爲a -> (a -> *) -> *
。它們對於什麼有用?
一個可能的用法示例可以使用conal的TypeCompose來構建無點式monad變換器。
type MyT = StateT Foo :. MaybeT :. ContT Bar
(只是作爲一個例子,我不知道什麼人會與那些FOOS和酒吧做..)
相反的:
type MyT m = StateT Foo (MaybeT (ContT Bar m))
(這將具有相同的除了newtype
-wrappers)
當前,您需要複製不同類型的組合代碼,並且此擴展消除了重複並允許使用一塊代碼來統治它們。
當然,它們對於定義對任意數量的數據構造函數進行操作的函數非常有用!
一個具體的例子可能是一個函數,給定一個具有任意arity的數據構造函數,返回一個新的數據構造函數,該函數將給定的構造函數包裝在Some()中。
Adding Polymorphic Kinds to GHC
的背景,這個問題將是motivation in general for a more expressive kind system。
也就是說,向Haskell添加多態類型的總體原因是爲了提高型編程的經驗。目前Haskell中的類型級編程基本上是無類型的「kind」級別。通常,更豐富的同類語言將使Haskell中的類型級編程更容易。
更具體的例子是從SYB風格(citation)的仿製藥刪除(動態)分型的限制,以及改善kinded更高泛型編程的全面支持..
你能舉個例子? – solidsnack 2010-06-17 14:49:47