Как вы, возможно, знаете, термин «ссылочно-прозрачный» означает, что значение выражения может зависеть только от значений его частей, а не от каких-либо других фактов о них.
Например, оно не может зависеть от следующего:
- Независимо от того, какая часть выражения уже оценена или нет (на ленивом языке)
- Совместно ли два равных значения (указатели на одно и то же место в памяти) или нет
- Является ли структура данных циклической (т.е. ее указатели создают цикл) или нет
Все эти факты о текущем состоянии программы либо истинны, либо ложны, но никакое выражение не может изменить их значение в зависимости от них. Итак, эти вещи называются ненаблюдаемыми .
Этот комикс и , посвященный reddit , может вас тоже просветить.