Я читаю что-то о монаде без опыта в Haskell и путают с понятием конструктора типов.В чем разница между конструкторами типов в Haskell и java generic типа?
Монада это тройка (
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, я прав? Если нет, какая разница?
в Java тип будет именем класса –
Ну, это было бы более похоже на класс 'interface', или, по крайней мере, * abstract *. – Bakuriu