2017-02-20 10 views
1

私はHaskellで経験のないモナドについて何かを読んでいて、タイプコンストラクタのコンセプトと混同しています。Haskellの型コンストラクタとjavaジェネリック型の違いは何ですか?

モナドは三重で​​(MunitMbindM)型コンストラクタM及び多型関数のペアからなります。 Javaでは

unitM :: a -> M a 

bindM :: M a -> (a -> M b) -> M b 

は:

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におけるジェネリック型のようなだけで何かであると考えますか?そうでない場合、違いは何ですか?

+0

Javaの場合、型はクラス名になります –

+1

これは、 'interface'または少なくとも* abstract *クラスに似ています。 – Bakuriu

答えて

5

あなたは私に混同しないでください。これは、HaskellのMonadクラスのJavaへの異常な翻訳のように見えます。 Haskellで

は、「タイプ」は、無未指定されたパラメータで具象型である任意の固定TためIntegerM<String>、又はM<T>が挙げられます。 Mのような1つ以上の残りのパラメータを持つものは、型のコンストラクタのような型コンストラクタです。具体的な型を生成するには1つの型引数(Tの値)を指定する必要があります。

関連する問題