Erlang有完整的REPL吗?

时间:2010-03-27 17:14:58

标签: erlang

有没有办法在Erlang中拥有一个完整的解释器,而不仅仅是一个“shell”。

由于它是一种动态语言,无法在解释器中定义命名函数有点令人失望......我怀疑这是因为编译单元(模块)必须由VM执行才能显式编译,但也许存在充当动态/可重新编译模块的REPL?

3 个答案:

答案 0 :(得分:5)

  

F = fun() - > io:format(“Hello World~n”,[])结束。

     

F()。

答案 1 :(得分:3)

答案 2 :(得分:3)

简短的回答是 NO ,它确实符合Erlang处理代码的方式。

Erlang VM仅支持已编译的代码。代码处理单元(包括编译)是模块,您可以加载,删除,更新和清除模块。因此,实际上不可能以与在lisp中相同的方式混合解释和编译的函数。可以扩展shell以允许在其中定义解释函数,但这些函数只能从shell解释器中调用,而不能从其他模块调用。还可以使shell重新编译并重新加载“shell模块”,以便可以从其他模块调用其中的函数。但是这个模块只会在erlang的调用中存在。

老实说,我没有真正看到重点,重新编译和重新加载代码一直如此之快,这不是一个问题。它更像是习惯的力量而不是方便。