Syntax 为什么在尝试在Erlang中定义函数时无法获得语法错误?

Syntax 为什么在尝试在Erlang中定义函数时无法获得语法错误?,syntax,erlang,Syntax,Erlang,我正在努力学习二郎。我已安装运行时,但无法使其工作。以下代码: X = 3. 有效,但以下语句均无效: f(X)->X. F() ->0. F([])->[]. 我返回1:“->”之前的语法错误。我试着用这个来计算单词数。我得到了同样的错误 这里怎么了?在REPL中,您必须使用fun(…)->。。。结束: 1> F = fun(X) -> X end. #Fun<erl_eval.6.80484245> 2> F(42). 42 在Er

我正在努力学习二郎。我已安装运行时,但无法使其工作。以下代码:

X = 3.
有效,但以下语句均无效:

 f(X)->X.
 F() ->0.
 F([])->[].
我返回
1:“->”之前的语法错误
。我试着用这个来计算单词数。我得到了同样的错误


这里怎么了?

在REPL中,您必须使用
fun(…)->。。。结束

1> F = fun(X) -> X end.
#Fun<erl_eval.6.80484245>
2> F(42).
42

在Erlang模块和Erlang shell(REPL)中编写函数时,sytax存在差异。正如P_A提到的,您需要调用As
F=fun(X)->X end,F(“Echo”)。

还要注意,函数名是原子,所以在Erlang模块中编写时必须以小写开头。如果你是认真的学习二郎,我建议你通过

你提到你在F#工作。在本例中,F#和Erlang之间的基本区别是这个表达式
让Lilo=[5;3;-3;0;0.5;]可以直接写入文件并执行。在Erlang中,它只能在Erlang shell中完成,而不能在文件中完成。
因此,您尝试的表达式应该位于与文件同名的函数中。考虑Test.Erl文件。可以从外部(shell)调用导出的任何函数

-模块(测试)。
-导出([test/0])。
测试()->
Lilo=[5,3,-3,0,0.5],

[X*2 | | X谢谢,它现在可以在控制台中工作。但我的主要问题是它不能在Eclipse中编译。即使是像“Lilo=[5,3,-3,0,0.5]这样简单的表达式。Lilo。“我有语法错误..我有一个错误”前面的语法错误:“:”,在“%lists:filter(fun(X)->X>2,Lilo”行中。(注释!!)在这个代码示例中,应该使用逗号拆分表达式:Lilo=[5,3,-3,0,0.5],Lilo。仍然相同(请注意,这些表达式位于单独的行上,但在堆栈溢出时,无法在注释中放置换行符。好的,我已删除或重新粘贴了代码、保存和粘贴。语法错误消失了,但它不应该在控制台中显示Lilo的内容吗?这令人困惑……到目前为止,我一直在使用F#,并认为切换到Erlang是不可能的。)这么大的一件事:/好的,我明白了。出于某种原因,Eclipse不会自动“c(lilo)”。谢谢。
1> c(word_count).
{ok,word_count}
2> word_count:word_count([]).
0
-module(test).    
-export([test/0]).    
test() ->
    Lilo = [5, 3, -3, 0, 0.5],
    [X*2 || X <-Lilo].