Я вообще не знаю Эрланга, поэтому, возможно, не смогу дать лучший ответ.
В Haskell вы не пишете программу как последовательность шагов, которые нужно оценить.Вместо этого вы определяете набор уравнений.Следовательно, понятие «назначение» не подходит.Когда я пишу x = 1
в Haskell, это не директива для привязки имени x
к значению 1, это объявление, что x
равно 1.
ВЭрланг, вы можете сделать что-нибудь с несвязанной переменной, кроме как назначить ее?Даже конструкция, которая проверяет, связана ли переменная или нет, сделала бы одно назначение Эрланга совершенно отличным от понятия переменных в Хаскеле.В этом отношении, если вы можете даже попытаться прочитать несвязанную переменную и заставить ее генерировать исключение, которое вы можете затем перехватить, это сделает отдельное назначение Эрланга совершенно другим.
Опять же, это связано с тем, что у Haskell нетКонцепция назначения на всех.Назначение - это шаг, который происходит в какой-то момент.Существует мир перед присваиванием, в котором переменная имела свое старое значение или не привязанное, и мир после присваивания, в котором переменная имеет новое значение.Каждый мир действителен, и выполнение большего количества шагов в каждом мире может иметь разные результаты.
В Haskell, когда я ссылаюсь на x
, либо x
находится в области действия и определяется, и в этом случае он имеет значениеили он не входит в сферу, и в этом случае я даже не написал программу на Haskell, и компилятор отклонит ее.До и после нет.
Учитывая, что небольшое количество поисков в Google указывает мне, что переменные могут снова быть несвязанными в Erlang, я бы сказал, что это совершенно разные понятия.