Учитывая следующую erlang
функцию
-module(fibonacci).
-export([my_function_3/1]).
my_function_3(Arg1) when Arg1==3 -> io:format("=3");
my_function_3(Arg1) when Arg1<3 -> io:format("<3");
my_function_3(Arg1) when Arg1>3 -> io:format(">3").
При вызове функции my_function_3
из командной строки отображаются другие значения, чем при вызове ее из оболочки (см. Ниже).
Обратите внимание, что я использовал 2
, 3
и 4
в качестве параметров, чтобы функция была оценена во всех ее определениях.
Вызов my_function_3
из оболочки erlang
$ erl
Erlang/OTP 22 [erts-10.6.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Eshell V10.6.2 (abort with ^G)
1> c(fibonacci).
{ok,fibonacci}
2> fibonacci:my_function_3(2).
<3ok
3> fibonacci:my_function_3(3).
=3ok
4> fibonacci:my_function_3(4).
>3ok
Вызов my_function_3
из командной строки
$ erlc fibonacci.erl
$ erl -noshell -s fibonacci my_function_3 2 -s init stop
>3%
$ erl -noshell -s fibonacci my_function_3 3 -s init stop
>3%
$ erl -noshell -s fibonacci my_function_3 4 -s init stop
>3%
Поэтому мой вопрос таков: почему erlang
выводит разные значения при вызове функции из командной строки и при вызове из оболочки erlang
?