Прозрачность ссылок является особенностью частей компьютерных программ. Часть программы называется "референтной прозрачностью", если ее можно заменить значением, которое она возвращает без изменения поведения программы. Ссылочная прозрачность должна быть чистой - она всегда должна давать один и тот же результат, если принимает один и тот же вход, и у нее не должно быть никаких побочных эффектов - частей программы, которые выполняют действие, отличное от возврата значения. Противоположностью референтной прозрачности является референтная непрозрачность.
В математике все функции являются условно прозрачными, потому что математическая функция может только принимать значения и выплёвывать их. В программировании это не всегда так - функция может также узнать, какой это день года, или распечатать сообщение на экране. Из-за этой разницы некоторые люди используют другие имена для функций в программировании, например, процедуры.
Прозрачность ссылок позволяет программистам и компиляторам думать о коде как о переписываемой системе - что-то, что берет выражение и заменяет его чем-то другим. Это может помочь в решении нескольких задач, например:
- Доказательство того, что программа или код корректны - что она делает именно то, что должна, несмотря ни на что.
- Сделать алгоритм более простым.
- Это облегчает изменение кода и в то же время позволяет быть уверенным, что он делает то, что должен.
- Заставляет код работать быстрее или использовать меньше памяти.
Существует несколько способов выполнения последней задачи - наиболее известные - это запоминание (сохранение ответов после первого раза), общее удаление подвыражений (выяснение, стоит ли объединять две части одного и того же кода), ленивая оценка (не находя ответа, пока код действительно нуждается в нем) и распараллеливание (работа над несколькими задачами одновременно).