[英]What's the different between type constructor in Haskell and java generic type?
我正在閱讀有關Monad的一些知識,但沒有在Haskell方面的經驗,並且對類型構造器的概念感到困惑。
一個monad是一個三元組(
M
,unitM
,bindM
),由類型構造函數M
和一對多態函數組成。unitM :: a -> M a bindM :: M a -> (a -> M b) -> M b
在Java中:
public class M<T> {
static <T> M<T> unit(T a)
static <T,R> M<R> bind(M<T> a, Function<T,M<R>> f)
}
我認為它們是相同的,類型構造函數就像Java中的泛型類型,對嗎? 如果沒有,有什么區別?
你聽起來沒讓我感到困惑。 這看起來像是Haskell的Monad類到Java的異常准確的翻譯。
在Haskell中,“類型”是沒有具體參數的具體類型,例如對於任何固定T
為Integer
, M<String>
或M<T>
。 具有一個或多個剩余參數的東西(如M
)就是“類型構造函數”,因為它就像類型的構造函數:必須產生一個類型實參( T
的值)才能產生具體的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.