Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang有完整的REPL吗?_Erlang - Fatal编程技术网

Erlang有完整的REPL吗?

Erlang有完整的REPL吗?,erlang,Erlang,有没有办法在Erlang中拥有一个完整的解释器,而不仅仅是一个“shell” 由于它是一种动态语言,无法在解释器中定义命名函数有点令人失望。。。我怀疑这是因为编译单元(模块)必须显式编译以供VM执行,但可能存在充当动态/可重新编译模块的REPL?这与 简短答复: 使用funs 详细回答: >F=fun()->io:format(“Hello World~n,[])结束。 >F()。 简短的回答是否,它确实适合Erlang处理代码的方式 Erlang VM只支持编译代码。代码处理(包括

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

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

这与

简短答复:

  • 使用funs
详细回答:

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

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

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


老实说,我并不认为这有什么意义,因为重新编译和重新加载代码总是如此之快,这并不是一个问题。与其说是方便,不如说是习惯的力量。

Erlang外壳是一件有趣的事情: