Ответ 1
Термин "нравственная эквивалентность" в (формализованной) логике и, в дополнение, к программированию не имеет ничего общего с призывом к морали (как в этических или философских вопросах). Он кооптирует термин "морально", но означает что-то другое. Обычно это означает, что "P имеет место, но только при определенных побочных условиях". Эти условия часто опускаются, если они не имеют образовательной ценности, являются тривиальными, техническими и/или скучными. Следовательно, связанная статья о "моральной эквивалентности" не имеет ничего общего - здесь нет оценочных суждений.
Я не знаю много о Purescript, но так, как я бы интерпретировал выражение, которое вы упомянули как "вы можете достичь того же с Aff
как ErrorT (ContT Unit (Eff e)) a
."
Чтобы дать еще один пример: скажем, у вас есть две функции, и вас интересует только конкретный (возможно большой) подмножество их доменов. Пусть также говорят, что эти две функции согласуются в этих областях, т.е. Для всех x ∈ dom, f (x) = g (x). Но ради примера, может быть, они делают что-то другое на 0, но вы никогда не пропустите 0 в них (потому что 0 нарушает некоторые предположения). Можно разумно сказать, что f и g "морально эквивалентны".
Особенно в сообществе логики существуют и другие виды использования "моральных", например, в фразе "доказательство морально сомнительно", а это означает, что автор считает, что доказательство является неаккуратным и что оно может иметь пробелы, но технически исправляемый. В конкретном случае, а именно, при проведении доказательств о потенциально не оканчивающихся программах, упомянутая вами статья дает такое оправдание, которое отражено в названии "Быстрое и свободное рассуждение является морально правильным".