此地图表达式中的语法错误是什么?

时间:2018-03-22 12:54:42

标签: erlang

关于以下map表达式:

map(_, []) -> [];
map(F, [X|XS]) -> [F(X)| map(F, XS)].

map(fun(X) -> X*X end, [2,3,4,5,6]).

'。'之前有错误。在最后一行。我为我的生活无法弄清楚它是什么。

1 个答案:

答案 0 :(得分:2)

map(_, []) -> [];
map(F, [X|XS]) -> [F(X)| map(F, XS)].

是函数定义并属于模块。

map(fun(X) -> X*X end, [2,3,4,5,6]).

是一个表达式并且属于某个函数定义或shell。像这样:

$ cat > my_lists.erl
-module(my_lists).

-export([map/2, squares/0]).

map(_, []) -> [];
map(F, [X|XS]) -> [F(X)| map(F, XS)].

squares() -> map(fun(X) -> X*X end, [2,3,4,5,6]).
$ erl
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V9.3  (abort with ^G)
1> c(my_lists).
{ok,my_lists}
2> my_lists:map(fun(X) -> X*X end, [2,3,4,5,6]).
[4,9,16,25,36]
3> my_lists:squares().
[4,9,16,25,36]
4>
User switch command
 --> q
$