有没有办法在Erlang中拥有一个完整的解释器,而不仅仅是一个"shell".
由于它是一种动态语言,无法在解释器中定义命名函数有点令人失望......我怀疑这是因为编译单元(模块)必须由VM执行才能显式编译,但可能是REPL作为动态/可重新编译模块存在吗?
简短的回答是否定的,它确实适合 Erlang 处理代码的方式。
Erlang VM 仅支持编译代码。包括编译在内的代码处理单元是模块,您可以加载、删除、更新和清除模块。所以实际上不可能像在 lisp 中那样混合解释和编译函数。可以扩展 shell 以允许在其中定义解释函数,但这些函数只能从 shell 解释器内部调用,而不能从其他模块调用。还可以使 shell 重新编译并重新加载“shell 模块”,以便可以从其他模块调用其中的函数。但是这个模块只会真正存在于 erlang 的调用中。
老实说,我并没有真正看到这一点,因为重新编译和重新加载代码一直如此之快,这不是问题。与其说是方便,不如说是习惯的力量。
| 归档时间: |
|
| 查看次数: |
3695 次 |
| 最近记录: |