Я процитирую то, что Джон Митчелл написал в своей книге Концепция на языке программирования .Я не помню его построчно, но он определяет, что чистый функциональный язык должен пройти декларативный языковой тест, который:
"В рамках определенного замедления x1, ..., xn, всевхождение выражения e, содержащего только переменные x1, ..., xn, имеют одинаковое значение. "
Короче говоря, все остальные, упомянутые без побочных эффектов или без побочных эффектов (" Отсутствие "побочные эффекты).
В лингвистике имя или именная фраза считаются референтно прозрачными, если их можно заменить другой именной фразой с таким же референтом, не меняя смысла содержащегося в ней предложения.
Который в 1-м случае имеет место, но во 2-м случае становится слишком странным.
Случай 1: «Я видел, как Уолтер садился в свою новую машину ».
И если у Уолтера есть Centro, то мы можем заменить его в данном предложении следующим образом:
«Я видел, как Уолтер попал в его Centro »
В отличие от первого:
Дело № 2: Его звали Уильям Руфус из-за его прочитанной бороды.
Руфус означает «немного красного», и речь шла об Уильяме IV из Англии.
"Его звали Уильям IV из-за его прочитанной бороды".выглядит слишком неловко
Традиционный способ сказать, что язык является ссылочно-прозрачным, если мы можем заменить одно выражение другим равным значением в любом месте программы, не меняя смысла программы.
Итак, ссылочная прозрачностьэто свойство чисто функционального языка.И если ваша программа свободна от побочных эффектов, то это свойство будет сохраняться.
Так что откажитесь от нее, это замечательный совет, но его использование также может хорошо выглядеть в этом контексте.