关于erlang中回调函数的有关问题

关于erlang中回调函数的问题
    今天在使用lists:map函数时遇到一个问题,传递给map的回调函数,只能使用fun定义的临时函数,否则erlang将报错。
测试代码如下:
%%test.erl
-module(test).
-export([test/0, test2/0, test3/0]).
f1(X)->
    X+1.
test() -> 
    _List = lists:map(f1, [1,2,3,4]).
test2()->
    F = fun(X) -> X+1 end,
    _List = lists:map(F, [1,2,3,4]).
test3()->
    List = [1,2,3,4],
    _List = [f1(X) || X <- List].

结果:
3> test:test().
** exception error: bad function f1
     in function  lists:map/2 (lists.erl, line 1173)
4> test:test2().
[2,3,4,5]
5> test:test3().
[2,3,4,5]

从执行结果中看到,传递的回调函数为外部函数时,运行时将报"bad function"的错误。可能是我的用法不对,现在的解决办法是使用列表解析,如test3/0函数所示的那样。

那么到底使用外部的函数作为回调函数呢?

1楼wangyangkobe2小时前
lists:map(fun f1/1, [1,2,3,4]).n这样估计就正确了。
Re: gavinr刚刚
回复wangyangkoben刚验证了是这样的,非常感谢