Есть ли полный ответ для Эрланга? - PullRequest
6 голосов
/ 27 марта 2010

Есть ли способ получить полноценного переводчика в Эрланге, а не просто "оболочку".

Поскольку это динамический язык, неспособность определить именованные функции в интерпретаторе немного разочаровывает ... Я подозреваю, что это потому, что модули (модули) компиляции должны быть явно скомпилированы для их выполнения виртуальной машиной, но, может быть, существует REPL, действующий как динамический / перекомпилируемый модуль?

Ответы [ 3 ]

5 голосов
/ 27 марта 2010

F = fun () -> io: format ("Hello World ~ n", []) end.

F ().

3 голосов
/ 28 марта 2010

Короткий ответ: НЕТ , он соответствует тому, как Эрланг обрабатывает код.

Erlang VM поддерживает только скомпилированный код. Единицей обработки кода, включая компиляцию, является модуль , вы загружаете, удаляете, обновляете и удаляете модули. Так что на самом деле невозможно смешивать интерпретированные и скомпилированные функции так же, как вы можете в lisp. Можно было бы расширить оболочку, чтобы позволить определять интерпретируемые функции внутри нее, но тогда они будут вызываться только из интерпретатора оболочки, а не из других модулей. Также можно было бы заставить оболочку перекомпилировать и перезагрузить «модуль оболочки», чтобы функции внутри нее могли вызываться из других модулей. Но тогда этот модуль действительно мог бы существовать только в этом вызове erlang.

И я, честно говоря, не вижу смысла в том, что перекомпиляция и перезагрузка кода всегда были настолько быстрыми, что это не было проблемой. Это скорее сила привычки, чем удобство.

3 голосов
/ 27 марта 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...