我尝试学习Erlang。我已经安装了运行时但无法使其运行。以下代码:
X=3.
有效,但以下不是
f(X)->X.
或
F() ->0.
或
F([])->[].
等。 所有产生" 1:语法错误之前:' - >'" 我试过" word_count"来自本教程:http://www.ybrikman.com/writing/2012/11/04/seven-languages-in-seven-weeks-erlang/ 我得到了同样的错误。
这里有什么问题?
答案 0 :(得分:1)
在REPL中你必须使用fun(...) -> ... end
:
1> F = fun(X) -> X end.
#Fun<erl_eval.6.80484245>
2> F(42).
42
如果您在文件中使用代码c
命令:
1> c(word_count).
{ok,word_count}
2> word_count:word_count([]).
0
答案 1 :(得分:1)
在Erlang模块和Erlang shell(REPL)中编写函数时,sytax有所不同。如P_A所述,您需要调用F = fun(X) -> X end, F("Echo").
另请注意,函数名称是atom,因此在Erlang模块中编写时必须以小写开头。如果您认真学习Erlang,我建议您通过this。
你提到你曾在F#工作过。在这种情况下,F#和Erlang之间的基本区别在于表达式
let Lilo = [|5; 3; -3; 0; 0.5|];;
可以直接写入文件并执行。在Erlang中,它只能在Erlang shell中完成,而不能在文件中完成。
因此,您正在尝试的表达式应位于module内的函数内,该函数与文件同名。考虑test.erl文件。您导出的任何函数都可以从外部(shell)调用。
-module(test).
-export([test/0]).
test() ->
Lilo = [5, 3, -3, 0, 0.5],
[X*2 || X <-Lilo].