2017-02-20 3 views
1

나는 Haskell에서 경험이없는 모나드에 대해 읽고 뭔가 타입 생성자의 개념과 혼동하고있다.하스켈의 타입 생성자와 자바 제네릭 타입의 차이점은 무엇입니까?

모나드는 트리플이다 (M, unitM, bindM) 타입 생성자 M 다형성 함수의 쌍으로 이루어진. 자바에서

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) 
} 

나는 내가 맞다, 그들은 동일 유형의 생성자는 자바 제네릭 형식 같은 단지 뭔가가있다 생각? 그렇지 않다면 무엇이 다른가요?

+0

자바에서 타입은 클래스 이름이 될 것입니다. –

+1

글쎄, 그것은'interface' 또는 적어도 * abstract * 클래스와 비슷할 것입니다. – Bakuriu

답변

5

당신은 나에게 혼란스럽지 않습니다. 이것은 Haskell의 Monad 클래스의 Java 로의 비정상적으로 정확한 번역처럼 보입니다. 하스켈

는 "타입"아니오 않은 특정 파라미터를 가지는 콘크리트 형 어떤 고정 용 TInteger, M<String> 또는 M<T>있다. M과 같은 하나 이상의 나머지 매개 변수가있는 유형은 유형의 생성자와 비슷하기 때문에 "유형 생성자"입니다. 구체적 유형을 생성하려면 하나의 유형 인수 (T의 값)를 지정해야합니다.