2016-06-06 15 views
12

Я заметил, что слово «мораль» продолжает развиваться в контекстах функционального программирования. Несколько примеров:Что означают функциональные программисты под «моральным»?

Я не знаком с этими использований слова. Я могу в основном вывести то, что они пытаются сказать, но можем ли мы уточнить, что это значит?

(Cross-разм English Language & Usage)

+3

Это больше похоже на [programmers.se] вопрос. – jonrsharpe

+2

FWIW, просто отбросьте «моральный», и смысл останется прежним. ИМО, вся эта «нравственность» - это просто причуда FP; см. http://rationalwiki.org/wiki/Moral_equivalence и т. д. – vaxquis

+2

«Моральная эквивалентность» можно более или менее рассматривать как тот же принцип, что и утка-типизация ... Если он ходит как утка, говорит как утка и как утка, тогда это, должно быть, утка.Это еще один способ сказать «до тех пор, пока конечный результат не будет таким же (я получаю тот же результат с конкретным вводом), мне все равно, что происходит под капотом». –

ответ

4

Термин «моральный эквивалент» в (формализованных) логик, и расширением, в программировании не имеет ничего общего с обращением к морали (как, этические или философские вопросы) , Он кооптирует термин «морально», но означает что-то другое. Обычно это означает, что «P имеет место, но только при определенных побочных условиях». Эти условия часто опускаются, если они не имеют образовательной ценности, являются тривиальными, техническими и/или скучными. Следовательно, связанная статья о «моральной эквивалентности» не имеет ничего общего - здесь нет оценочных суждений.

Я не знаю много о Purescript, но так, как я бы интерпретировал заявление, которое вы упомянули как «вы можете достичь того же с Aff как ErrorT (ContT Unit (Eff e)) a».

Чтобы привести другой пример: предположим, что у вас есть две функции, и вас интересует только конкретный (возможно большой) подмножество их доменов. Предположим также, что эти две функции согласуются с этими областями, т. Е. Для всех x ∈ dom, f (x) = g (x). Но ради примера, может быть, они делают что-то другое на 0, но вы никогда не пропустите 0 в них (потому что 0 нарушает некоторые предположения). Можно было бы разумно сказать, что f и g «морально эквивалентны».

В частности, в сообществе логики существуют и другие виды использования «моральных», например, в фразе «доказательство морально сомнительно», а это означает, что автор считает доказательство неаккуратным и может иметь пробелы, но технически исправляемый. В конкретном случае, а именно, при проведении доказательств о потенциально не заканчивающихся программах, упомянутая вами статья дает такое оправдание, которое отражено в названии «Быстрое и свободное рассуждение - это морально правильно».

2

Как Конор Макбрайд указывает на твиттер, это использование проистекает из сообщества теории категорий, которое очень сильно вдохновляет на fp.

https://twitter.com/pigworker/status/739971825128607744

Юджиния Ченг имеет хороший документ, описывающий концепцию морали, как используется в математике.

http://www.cheng.staff.shef.ac.uk/morality/morality.pdf