Использование имени для ссылки на что-то иное, чем то, что оно делало во вложенной / предыдущей области, известно как «скрытие» этого имени. Это действительно отличается от мутации. В Хаскеле, например, я могу написать
return 1 >>= \x -> return (x + 1) >>= \x -> print x.
x
, который напечатан, является введенным второй лямбдой, то есть 2
.
В нотации do это выглядит немного более знакомым:
foo = do
x <- return 1
x <- return (x + 1)
print x
Насколько я понимаю, Эрланг вообще запрещает псевдонимы.
Тем не менее, я подозреваю, что mathepic является правильным с точки зрения Ruby - он не просто скрывает имя, но изменяет какой-то основной объект. С другой стороны, я не очень хорошо знаю Руби ...