История изменений
Исправление a--, (текущая версия) :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
{
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit(); // вовсе не обязательно выходить, можно выставить флаг
}
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Либо предложи свой аналог подобного кода. Вовсе не обязательно выходить, можно выставить флаг. Можно запускать 2 инстанса программы в одинаковой внешней среде (причем запускать руками, а не из хаскеля). Или еще как-то.
Полиморфность по монадам не обязательно, главное чтобы было можно присобачить че-нить типа IO, State и в этом духе, а так же настоящие монады, меняя исходник в одном месте (а не прыгая по всему тексту).
Помощь зала при написании этого кода весьма приветствуется :-)
Исправление a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
{
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit(); // вовсе не обязательно выходить, можно выставить флаг
}
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Либо предложи свой аналог подобного кода. Вовсе не обязательно выходить, можно выставить флаг. Можно запускать 2 инстанса программы в одинаковой внешней среде. Или еще как-то.
Полиморфность по монадам не обязательно, главное чтобы было можно присобачить че-нить типа IO, State и в этом духе, а так же настоящие монады, меняя исходник в одном месте (а не прыгая по всему тексту).
Помощь зала при написании этого кода весьма приветствуется :-)
Исправление a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
{
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit(); // вовсе не обязательно выходить, можно выставить флаг
}
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Либо предложи свой аналог подобного кода. Вовсе не обязательно выходить, можно выставить флаг. Можно запускать 2 инстанса программы в одинаковой внешней среде. Или еще как-то.
Полиморфность по монадам не обязательно, главное чтобы было можно присобачить че-нить типа IO, State и в этом духе, а так же настоящие монады, меняя исходник в одном месте (а не прыгая по всему тексту).
Исправление a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
{
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit(); // вовсе не обязательно выходить, можно выставить флаг
}
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Либо предложи свой аналог подобного кода. Вовсе не обязательно выходить, можно выставить флаг. Можно запускать 2 инстанса программы в одинаковой внешней среде. Или еще как-то.
Полиморфность по монадам не обязательно, главное чтобы было можно присобачить че-нить типа IO, State и в этом духе.
Исправление a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
{
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit(); // вовсе не обязательно выходить, можно выставить флаг
}
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Либо предложи свой аналог подобного кода. Вовсе не обязательно выходить, можно выставить флаг. Можно запускать 2 инстанса программы в одинаковой внешней среде. Или еще как-то.
Исправление a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
{
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit(); // вовсе не обязательно выходить, можно выставить флаг
}
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Либо предложи свой аналог подобного кода. Вовсе не обязательно выходить, можно выставить флаг. Можно запускать 2 инстанса программы. Или еще как-то.
Исправление a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
{
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit(); // вовсе не обязательно выходить, можно выставить флаг
}
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Либо предложи свой аналог подобного кода. Вовсе не обязательно выходить, можно выставить флаг. Можно запускать 2 инстанса программы. Или еще как.
Исправление a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
{
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit(); // вовсе не обязательно выходить, можно выставить флаг
}
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Либо предложи свой аналог подобного кода.
Исправление a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
{
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit();
}
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Либо предложи свой аналог подобного кода.
Исправление a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit();
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Либо предложи свой аналог подобного кода.
Исправление a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit();
}
std::cout << "ассоциативность для набора проверена\n";
Этот код должен давать твое понимание «ассоциативность монадического связывания», но «не ассоциативность операции с типом внутри».
Исходная версия a--, :
В любой монаде в Haskell для оператора <=< соблюдается ассоциативность. Всё. Точка.
Спасибо, поржал.
Ладно, смотри какой код я хочу увидеть от тебя (но на хаскеле):
auto xx = { ... };
auto yy = { ... };
auto zz = { ... };
for( auto x: xx ) for( auto y: yy ) for( auto z: zz )
{
if( (x+y)+z != x+(y+z) )
std::cout << "ассоциативность нарушается при " << x << " " << y << " " << z << "\n";
exit();
}
std::cout << "ассоциативность для набора проверена\n";