Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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中的Elixir模块失败_Erlang_Elixir - Fatal编程技术网

使用Erlang中的Elixir模块失败

使用Erlang中的Elixir模块失败,erlang,elixir,Erlang,Elixir,我试图在Erlang模块中使用从Elixir源代码编译的beam文件。运行Erlang节点时会出现错误,但我可以直接使用Elixir中的代码 长生不老药模块: defmodule Recursion do def print_multiple_times(msg, n) when n <= 1 do IO.puts msg end def print_multiple_times(msg, n) do IO.puts msg print_multipl

我试图在Erlang模块中使用从Elixir源代码编译的beam文件。运行Erlang节点时会出现错误,但我可以直接使用Elixir中的代码

长生不老药模块:

defmodule Recursion do
  def print_multiple_times(msg, n) when n <= 1 do
    IO.puts msg
  end

  def print_multiple_times(msg, n) do
    IO.puts msg
    print_multiple_times(msg, n - 1)
  end
end
编译两个:

$rm-f*.beam $elixirc recursion.ex
$erlc use\u recur.erl

运行Erlang:

$erl-run use_recur hey-run init stop-noshell{“init终止于do_boot”{unde,[{'Elixir.IO',put,['Hello!'],[]},{'Elixir.Recursion',多次打印,2,[{file,'Recursion.ex},{line,7}},{init start_em,1,[]},{init do_boot,3,[]} init终止于do_boot({unde,[{Elixir.IO,put,Hello!,[]},{Elixir.Recursion,多次打印,2,[{},{},{}]},{init,start_em,1,[]},{init,do_boot,3,[]})

正在将崩溃转储写入:erl_Crash.dump…完成

长生不老药:

Recursion.print_multiple_times "Hello!", 3
成功运行:

$ elixir elx_recur.exs  
Hello!
Hello!
Hello!

为什么会这样?我认为Erlang的输出应该是相同的。

错误意味着Erlang找不到名为
'Elixir.IO'
的模块。本模块是core Elixir的一部分。您需要使用
-pa
(或其他类似标志,如
-pz
)将Elixir安装的
ebin
文件夹添加到Erlang的加载路径,以使Erlang加载Elixir的核心库,因为该文件夹包含Elixir core的编译后的
.beam
文件,包括
Elixir.IO.beam

erl -pa /path/to/elixir/ebin ...

您可能需要使用
-pa
(例如
erl-pa/path/to/Elixir/ebin…
)将包含Elixir的beam文件的目录添加到
erl
)。该错误意味着Erlang无法找到
'Elixir.IO'
模块。Alexanders MacBook Air:~alexander$erl-pa/usr/local/Cellar/Elixir/1.4.5/lib/Elixir/ebin-run use\u recur hey-run init stop-noshell您好!你好你好Alexanders MacBook Air:~alexander$ls/usr/local/cillar/elixir/1.4.5/lib/elixir/ebin/| grep elixir.String.beam elixir.String.beam你能把这条评论作为一个答案转发给我吗?
erl -pa /path/to/elixir/ebin ...