为什么通用Erlang应用程序(通用测试、透析器、leex、yecc等)在“erl”外壳中不可用?

为什么通用Erlang应用程序(通用测试、透析器、leex、yecc等)在“erl”外壳中不可用?,erlang,erl,Erlang,Erl,回到Erlang,我注意到我无法运行任何有自己用户指南的支持框架,比如EUnit、Common Test、leex、yecc、Dyalizer、Typer等 根据“通用测试应用程序与Erlang/OTP系统一起安装”,并且“不需要额外的安装步骤”。我认为其他人也是如此,我确信我遗漏了一些基本的东西。@aronisstav对“基于已加载内容的shell自动完成功能造成的误解”的评论一针见血。再次引用他的话,正确答案是: 所有这些工具都有一些合适的Erlang“入口点”函数和 调用此函数应该可以工作

回到Erlang,我注意到我无法运行任何有自己用户指南的支持框架,比如EUnit、Common Test、leex、yecc、Dyalizer、Typer等


根据“通用测试应用程序与Erlang/OTP系统一起安装”,并且“不需要额外的安装步骤”。我认为其他人也是如此,我确信我遗漏了一些基本的东西。

@aronisstav对“基于已加载内容的shell自动完成功能造成的误解”的评论一针见血。再次引用他的话,正确答案是:


所有这些工具都有一些合适的Erlang“入口点”函数和 调用此函数应该可以工作(假设您没有启动 嵌入模式下的节点/外壳)

尝试一下下面的这些,它们成功了(我想我只是个白痴):

要使shell自动完成工作,只需在
erl
shell中使用或
l(模块)
加载模块:

$ erl

1> code:load_file(ct).
{module,ct}

2> l(dialyzer).
{module,dialyzer}

模块未“预加载”并不意味着它们“不可用”。您实际上不需要显式地加载它们;只要它们在加载路径中,调用其中的任何函数都会自动加载它们(假设您不是在嵌入式模式下启动节点/shell)。所有这些工具都有一些合适的Erlang“入口点”,可以在没有显式的
l(…)
的情况下使用。所有这些工具都有一些合适的Erlang“入口点”函数,调用此函数应该可以工作(假设您不是在嵌入式模式下启动节点/外壳)。这可能是因为shell的自动完成功能基于已经加载的内容而导致的误解吗?非常感谢!我试着明确地输入函数,但我想我不是一个好的打字员。。。我也更新了我的答案,但从技术上讲,这是你的答案,所以如果你提交你自己的,那么我会接受它;我不想因此而受到赞扬。
$ erl

1> code:load_file(ct).
{module,ct}

2> l(dialyzer).
{module,dialyzer}