Термин «моральный эквивалент» в (формализованных) логик, и расширением, в программировании не имеет ничего общего с обращением к морали (как, этические или философские вопросы) , Он кооптирует термин «морально», но означает что-то другое. Обычно это означает, что «P имеет место, но только при определенных побочных условиях». Эти условия часто опускаются, если они не имеют образовательной ценности, являются тривиальными, техническими и/или скучными. Следовательно, связанная статья о «моральной эквивалентности» не имеет ничего общего - здесь нет оценочных суждений.
Я не знаю много о Purescript, но так, как я бы интерпретировал заявление, которое вы упомянули как «вы можете достичь того же с Aff
как ErrorT (ContT Unit (Eff e)) a
».
Чтобы привести другой пример: предположим, что у вас есть две функции, и вас интересует только конкретный (возможно большой) подмножество их доменов. Предположим также, что эти две функции согласуются с этими областями, т. Е. Для всех x ∈ dom, f (x) = g (x). Но ради примера, может быть, они делают что-то другое на 0, но вы никогда не пропустите 0 в них (потому что 0 нарушает некоторые предположения). Можно было бы разумно сказать, что f и g «морально эквивалентны».
В частности, в сообществе логики существуют и другие виды использования «моральных», например, в фразе «доказательство морально сомнительно», а это означает, что автор считает доказательство неаккуратным и может иметь пробелы, но технически исправляемый. В конкретном случае, а именно, при проведении доказательств о потенциально не заканчивающихся программах, упомянутая вами статья дает такое оправдание, которое отражено в названии «Быстрое и свободное рассуждение - это морально правильно».
Это больше похоже на [programmers.se] вопрос. – jonrsharpe
FWIW, просто отбросьте «моральный», и смысл останется прежним. ИМО, вся эта «нравственность» - это просто причуда FP; см. http://rationalwiki.org/wiki/Moral_equivalence и т. д. – vaxquis
«Моральная эквивалентность» можно более или менее рассматривать как тот же принцип, что и утка-типизация ... Если он ходит как утка, говорит как утка и как утка, тогда это, должно быть, утка.Это еще один способ сказать «до тех пор, пока конечный результат не будет таким же (я получаю тот же результат с конкретным вводом), мне все равно, что происходит под капотом». –