Здравствуйте, Sinclair, Вы писали:
V>>Если речь про структурное построение, а не про арифметические или логические вычисления,
S>Вы зря противопоставляете эти две концепции.
Э, нет, ты сказал что сказал — вполне однозначно.
S>Во всех трёх строчках происходит одно и то же — конструируется новое значение на основе старого, старое остаётся неизменным.
Это потому что ты косноязычный, не владеешь терминологией.
Пытаешься "объяснить на пальцах", в то время как для объяснения инвариантности природы термов (лямбд и переменных) необходимо пользоваться терминологией, например, из лямбда исчисления Чёрча.
Чтобы потом не бегать за людьми и не канючить "да я не это имел ввиду, да меня не так поняли!", а потом и вовсе обиженно "да вы просто сами ничего не понимаете!"
S>То, что первая и вторая строчка = "арифметические операции", а третья — "структурное построение", ещё менее важно, чем различия в синтаксисе между оператором + и вызовом метода.
Уфф...
Вот в голове у тебя крутится, прям вижу вращающиеся шестеренки... а сформулировать ты не в состоянии... испанский сплошной стыд...
В общем, есть такая ф-ия, называется identity.
Любая переменная может быть представлена лямбдой, захватившей её адрес.
(согласно определению, переменная — это именованный адрес)
Фишка в том, что адрес глобальной переменной (или смещение локальной в стеке) — это константа времени компиляции, только поэтому мы можем рассматривать процесс чтения значения переменной как вызов ф-ии identity.
Но стоит ввести иммутабельность, и тогда мы можем построить через две аналогичные ф-ии чтение и для ссылочных типов. Ву а ля!
(ввиду того что ID(a)=a сколь угодно транзитивно)
В этом месте любые рассуждения заканчиваются, бо далее и так всё понятно, бо оно применимо к термам-переменным и термам-лямбдам, хорош марать бумагу. ))
За твои потуги реально сплошной испанский стыд, жалею, что ввязался в это.