在喬·阿姆斯特朗的書,在章節12.7結束時,他說:尾遞歸編程二郎第2版,喬·阿姆斯特朗
「避免,這是很容易;如果你寫一個函數F從不返回(如環()),確保在調用F之後永遠不會調用任何東西,也不要在列表或元組構造函數中使用F.
摘錄自:Joe Armstrong。 「編程Erlang,第二版」。
他是什麼意思:「並且不要在列表或元組構造函數中使用F.
感謝
在喬·阿姆斯特朗的書,在章節12.7結束時,他說:尾遞歸編程二郎第2版,喬·阿姆斯特朗
「避免,這是很容易;如果你寫一個函數F從不返回(如環()),確保在調用F之後永遠不會調用任何東西,也不要在列表或元組構造函數中使用F.
摘錄自:Joe Armstrong。 「編程Erlang,第二版」。
他是什麼意思:「並且不要在列表或元組構造函數中使用F.
感謝
我沒有這本書,但是從字面上就意味着你必須避免以下幾種情況:
loop() ->
receive
M -> do_stuff()
end,
loop()
end.
some_func() ->
foo(),
loop(),
% Don't do this
bar() % bar will never be called
end.
other_func() ->
% Don't do this
T = {test,loop()}, % T will never be created
% Nor this
L = [loop()|lists:seq(1,12)]
end.
注:這有什麼好做的提到的尾遞歸問題的標題。在這個例子中,函數循環/ 0是尾遞歸的。
謝謝。這是有道理的。我想他的意思是不這樣做: 環路() - > 收到 米 - > do_stuff() 結束, [環路()|列表:SEQ(1,12) 結束。 – antipatreal
請給我們更多的背景。我沒有在我面前的書。你試圖避免什麼? – loxs