Erlang有完整的REPL吗?
有没有办法在Erlang中拥有一个完整的解释器,而不仅仅是一个“shell” 由于它是一种动态语言,无法在解释器中定义命名函数有点令人失望。。。我怀疑这是因为编译单元(模块)必须显式编译以供VM执行,但可能存在充当动态/可重新编译模块的REPL?这与 简短答复:Erlang有完整的REPL吗?,erlang,Erlang,有没有办法在Erlang中拥有一个完整的解释器,而不仅仅是一个“shell” 由于它是一种动态语言,无法在解释器中定义命名函数有点令人失望。。。我怀疑这是因为编译单元(模块)必须显式编译以供VM执行,但可能存在充当动态/可重新编译模块的REPL?这与 简短答复: 使用funs 详细回答: >F=fun()->io:format(“Hello World~n,[])结束。 >F()。 简短的回答是否,它确实适合Erlang处理代码的方式 Erlang VM只支持编译代码。代码处理(包括
- 使用funs
>F=fun()->io:format(“Hello World~n,[])结束。
>F()。
简短的回答是否,它确实适合Erlang处理代码的方式
Erlang VM只支持编译代码。代码处理(包括编译)的单位是模块,您可以加载、删除、更新和清除模块。因此,实际上不可能像在lisp中那样混合解释函数和编译函数。可以扩展shell以允许在其中定义解释的函数,但是这些函数只能从shell解释器中调用,而不能从其他模块调用。还可以使shell重新编译并重新加载“shell模块”,以便可以从其他模块调用其中的函数。但是这个模块只会真正存在于erlang的调用中
老实说,我并不认为这有什么意义,因为重新编译和重新加载代码总是如此之快,这并不是一个问题。与其说是方便,不如说是习惯的力量。Erlang外壳是一件有趣的事情: