Что такое ссылочная прозрачность? - PullRequest
255 голосов
/ 17 октября 2008

Что означает термин ссылочная прозрачность ? Я слышал, что это описывается как «это означает, что вы можете заменить равные равными», но это кажется неадекватным объяснением.

Ответы [ 12 ]

2 голосов
/ 27 июля 2012

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

Связанная проблема, которая может проявляться в контексте программирования, может быть полиморфизмом.

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

0 голосов
/ 09 декабря 2018

Я нашел определение ссылочной прозрачности в книге " Структура и реализация компьютерных программ " (Книга волшебников) полезным, поскольку оно дополнено объяснением того, как ссылочная прозрачность нарушается введением операции присваивания . Проверьте следующую слайд-колоду, которую я сделал по этому вопросу: https://www.slideshare.net/pjschwarz/introducing-assignment-invalidates-the-substitution-model-of-evaluation-and-violates-referential-transparency-as-explained-in-sicp-the-wizard-book

...