Erlang基本语法错误

时间:2015-05-15 13:06:39

标签: syntax erlang

我尝试学习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/ 我得到了同样的错误。

这里有什么问题?

2 个答案:

答案 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].