erlang - 执行Erlang脚本时抛出"init terminating in do_boot

这是我在“factorial.erl”中的代码:

-module(factorial).
-author("jasonzhu").

%% API
-export([fac/1]).

fac(0) -> 1;
fac(N) -> N * fac(N-1).

当在提示中交互这段代码时,它工作正常:

1> c(factorial).
{ok,factorial}
2> factorial:fac(20).
2432902008176640000

但是如果我从命令行编译并执行它,就会出现一些错误。

Jasons-MacBook-Pro:src jasonzhu$ erlc factorial.erl 
Jasons-MacBook-Pro:src jasonzhu$ erl -noshell -s factorial fac 20 -s init stop
{"init terminating in do_boot",{badarith,[{factorial,fac,1,[{file,"factorial.erl"},{line,8}]},{init,start_it,1,[]},{init,start_em,1,[]}]}}

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()

谁能帮帮我?我是 Erlang 的新手,非常感谢!

最佳答案

-noshell语法是

erl -noshell -s Module Function Arguments

其中 Arguments 是一个原子列表。因此,您必须从列表中获取“fac”参数并将其转换为整数。

这个

-module(factorial).

-export([fac/1]).

fac([N]) ->
    X = fac(list_to_integer(atom_to_list(N))),
    io:format("~p~n", [X]);
fac(0) -> 1;
fac(N) -> N * fac(N-1).

作品

>>> erl -noshell -s factorial fac 20 -s init stop
2432902008176640000

关于erlang - 执行Erlang脚本时抛出"init terminating in do_boot",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091487/

相关文章:

ruby-on-rails - 使用 Rails 将带连字符的单词的两个部分都大写

r - 加载 Data.Table 后遮盖的润滑对象

unity3d - 团结 |查找具有指定父对象的子游戏对象

java - 接口(interface)是否被视为对象?

opengl-es - 使用具有多个颜色纹理附件的 FrameBufferObject

php - 第 2 行超出范围 (2 - 1) laravel-excel

java - 有没有办法清除JAVA中对象的所有字段?

git - 我如何将 openshift git 存储库连接到 bitbucket

r - 如何只保留 R 中 4 个数据帧之间的公共(public)行名?

python - 在python中将多个png组合成一个pdf