【问题标题】:What is the syntax error in this map expression?此地图表达式中的语法错误是什么?
【发布时间】:2018-03-22 22:59:38
【问题描述】:

关于以下map 表达式:

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

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

'.'之前有一个错误在这最后一行。我这辈子都不知道是什么。

【问题讨论】:

    标签: erlang


    【解决方案1】:
    map(_, []) -> [];
    map(F, [X|XS]) -> [F(X)| map(F, XS)].
    

    是函数定义,属于一个模块。

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

    是一个表达式,属于某个函数定义或外壳。像这样:

    $ 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
    $
    

    【讨论】:

      猜你喜欢
      • 2012-03-22
      • 1970-01-01
      • 2021-10-29
      • 2015-06-21
      • 1970-01-01
      • 2013-01-22
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      相关资源
      最近更新 更多