E
Size: a a a
E
LL
n = n + 1
print(pointer(context["n"])) # prints 0x0011
context["n"] = create_new_variablе(context["n"] + 1)
print(pointer(context["n"])) # prints 0x0022
V
новое_n
просто имеет в данном контексте то же имя, что и староеLL
E
LL
n = n + 1
print(pointer(context["n"])) # prints 0x0011
context["n"] = create_new_variablе(context["n"] + 1)
print(pointer(context["n"])) # prints 0x0022
E
V
x = 1т.е. в некоторых многих языках функции могут мутировать свои аргументы. И это есть проблема как минимум когнитивная - сложнее читать код. Иммутабельность - это про гарантию того, что после вызова функции аргумент останется таким же каким был до вызова.
something(x)
x == ??? # тут ты совершенно не знаешь, чему равно x, может быть 1, а может быть 42 или 100500
E
М
V
plusOne = fn (x) -> x + 1 end
x = 1
IO.puts x # ==> 1
plusOne.(x)
IO.puts x # ==> 1
x = plusOne.(x)
IO.puts x # ==> 2
E
E
М
V
E
V
E
V
М