3
我知道Erlang支持匿名函數。我的問題是,我可以從函數返回一個函數,然後從外部調用返回的函數嗎?如果是這樣,我該怎麼做?我知道這在許多語言中都是可能的,例如C和Python。這裏是我試圖這樣做,但它不工作:Erlang:從函數返回函數
-module(test).
-export([run/0]).
test() ->
io:format("toasters", []).
bagel() ->
test.
run() ->
(bagel())().
結果:
Erlang/OTP 17 [erts-6.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Eshell V6.2 (abort with ^G)
1> c(test).
test.erl:4: Warning: function test/0 is unused
{ok,test}
2> test:run().
** exception error: bad function test
in function test:run/0 (test.erl, line 11)
3>
這讓我微笑 - 你找到了自己的答案,你現在永遠不會忘記它。請記住,儘管函數*標籤*是一個原子,但完整的函數標識就是它的標籤/奇偶校驗。 – zxq9
@ zxq9我其實已經忘記了......但現在我永遠不會忘記!我忘了在我的功能之前放入'fun',並想知道爲什麼我得到'badarith'錯誤;我正在分割一個原子! – sudo