Эрланг: Почему это происходит с исключением "badarith"?
Можно ли реализовать закрытие в Erlang?
Например, как я мог бы перевести этот фрагмент из Scheme?
(define (make-adder n)
(lamdba (x) (+ x n)))
Я пробовал следующее, но я явно что-то пропустил.
make_adder(n) ->
fun (x) -> x + n end.
При компиляции это дает ошибку
Warning: this expression will fail with a 'badarith' exception
Ответы
Ответ 1
Вы не можете добавлять атомы. Переменные начинаются с букв "Капитал" в erlang. слова, начинающиеся с букв в нижнем регистре, являются атомами.
Другими словами, ваша проблема не связана с fun
вообще, вам просто нужно загладить ваши имена переменных.
Ответ 2
make_adder(N) ->
fun (X) -> X + N end.
Ответ 3
Переменные начинаются с Капитальных писем в erlang.
слова, начинающиеся с букв в нижнем регистре, являются атомами.