История изменений
Исправление qnikst, (текущая версия) :
монада это точка с запятой. всё.. никого матана, никакого бурито!
Ладно, наврал, в модане ещё и значение передается, т.е. это x = foo ; bar x
, что тут понимать то? Далее этот «оператор» можно перегрузить, т.е. (псевдокод на си-подобном языке):
; ((Maybe a) value, *(Maybe b)(a) next) {
if (value->empty == false) {
return Nothing;
} else {
return next(value->value);
}
}
struct (Maybe_a) {
int empty,
a* value,
} (Maybe a);
При этом хацкель не заставляет сразу пользоваться всеми фичами CPS,Iteratee/Conduit/Pipes,стрелками,использовать FRP, typefamilies, gadt, знать про primitive, c--. Так что дурацкое сравнение.
Исправление qnikst, :
монада это точка с запятой. всё.. никого матана, никакого бурито!
Ладно, наврал, в модане ещё и значение передается, т.е. это x = foo ; bar x
, что тут понимать то? Далее этот «оператор» можно перегрузить, т.е. (псевдокод на си-подобном языке):
; ((Maybe a) value, (*Maybe b)(a) next) {
if (value->empty == false) {
return Nothing;
} else {
return next(value->value);
}
}
struct (Maybe_a) {
int empty,
a* value,
} (Maybe a);
При этом хацкель не заставляет сразу пользоваться всеми фичами CPS,Iteratee/Conduit/Pipes,стрелками,использовать FRP, typefamilies, gadt, знать про primitive, c--. Так что дурацкое сравнение.
Исправление qnikst, :
монада это точка с запятой. всё.. никого матана, никакого бурито!
Ладно, наврал, в модане ещё и значение передается, т.е. это x = foo ; bar x
, что тут понимать то? Далее этот «оператор» можно перегрузить, т.е. (псевдокод на си-подобном языке):
; ((Maybe a) value, (*Maybe b)(a) next) {
if (value.empty == false) {
return Nothing;
} else {
return next(value.value);
}
}
struct (Maybe_a) {
int empty,
a* value,
} (Maybe a);
При этом хацкель не заставляет сразу пользоваться всеми фичами CPS,Iteratee/Conduit/Pipes,стрелками,использовать FRP, typefamilies, gadt, знать про primitive, c--. Так что дурацкое сравнение.
Исправление qnikst, :
монада это точка с запятой. всё.. никого матана, никакого бурито!
Ладно, наврал, в модане ещё и значение передается, т.е. это x = foo ; bar x
, что тут понимать то? Далее этот «оператор» можно перегрузить, т.е. (псевдокод на си-подобном языке):
; ((Maybe a) value, (*Maybe b)(a) next) {
if (value.empty nothing == false) {
return Nothing;
} else {
return next(value.value);
}
}
struct (Maybe_a) {
int empty,
a* value,
} (Maybe a);
При этом хацкель не заставляет сразу пользоваться всеми фичами CPS,Iteratee/Conduit/Pipes,стрелками,использовать FRP, typefamilies, gadt, знать про primitive, c--. Так что дурацкое сравнение.
Исходная версия qnikst, :
монада это точка с запятой. всё.. никого матана, никакого бурито!
Ладно, наврал, в модане ещё и значение передается, т.е. это x = foo ; bar x
, что тут понимать то? Далее этот «оператор» можно перегрузить, т.е. (псевдокод на си-подобном языке):
; ((Maybe a) value, (*Maybe b)(a) next) {
if (value.empty nothing == false) {
return Nothing;
} else {
return next(value.value);
}
}
struct (Maybe_a) {
int empty,
a* value,
} (Maybe a);