Чистота и ссылочная прозрачность

Кажется, что термины определены по-разному, но я всегда думал одно подразумевает другое; Я не могу придумать ни одного случая, когда выражение было бы ссылочно прозрачным, но не чистым, или наоборот.

В Википедии есть отдельные статьи по этим концепциям и говорится:

Из Ссылочная прозрачность : выражение - чистые функции, тогда выражение референциально прозрачный. Кроме того, некоторые нечистые функции могут быть включены в выражение, если их значения отброшены, а их побочные эффекты незначительно.

Из Чистые выражения :

Чистые функции требуются для создавать чистые выражения. [...] Чистый выражения часто называют быть ссылочно прозрачным.

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

Есть ли более простой способ понять различия между чистым выражением и ссылочно прозрачным, если таковые имеются? Если есть разница, будет оценен пример выражения, который ясно демонстрирует это.

58
задан Richard JP Le Guen 14 March 2013 в 03:07
поделиться