2010-06-17 67 views

回答

11

一個可能的用法示例可以使用conal的TypeCompose來構建無點式monad變換器。

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

(只是作爲一個例子,我不知道什麼人會與那些FOOS和酒吧做..)

相反的:

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

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

當前,您需要複製不同類型的組合代碼,並且此擴展消除了重複並允許使用一塊代碼來統治它們。

1

當然,它們對於定義對任意數量的數據構造函數進行操作的函數非常有用!

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

+1

你能舉個例子? – solidsnack 2010-06-17 14:49:47

11

Adding Polymorphic Kinds to GHC

的背景,這個問題將是motivation in general for a more expressive kind system

也就是說,向Haskell添加多態類型的總體原因是爲了提高型編程的經驗。目前Haskell中的類型級編程基本上是無類型的「kind」級別。通常,更豐富的同類語言將使Haskell中的類型級編程更容易。

更具體的例子是從SYB風格(citation)的仿製藥刪除(動態)分型的限制,以及改善kinded更高泛型編程的全面支持..