【问题标题】:Is there a full REPL for Erlang?Erlang 有完整的 REPL 吗?
【发布时间】:2011-02-01 13:51:00
【问题描述】:

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

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

【问题讨论】:

标签: erlang


【解决方案1】:
> F= fun () -> io:format("Hello World~n", []) end.
> F().

【讨论】:

    【解决方案2】:

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

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

    老实说,我真的不明白这一点,因为重新编译和重新加载代码一直如此之快,这不是问题。与其说是方便,不如说是习惯的力量。

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 2014-01-18
      • 1970-01-01
      • 2012-12-15
      • 2015-11-30
      • 2011-01-29
      • 2021-04-14
      • 2021-10-11
      • 2017-09-23
      • 2011-01-25
      相关资源
      最近更新 更多