Haskell (as commonly implemented) does not have a call stack;
evaluation is based on graph reduction.
本当に?興味深いことに、私自身は経験したことがありませんが、フォールド関数の厳密なバージョンを使用せずに無限フォールドの評価を強制すると、スタック オーバーフローが発生することを読んだことがあります。確かに、それはスタックの存在を示しています。誰でも明確にできますか?
Haskell (as commonly implemented) does not have a call stack;
evaluation is based on graph reduction.
本当に?興味深いことに、私自身は経験したことがありませんが、フォールド関数の厳密なバージョンを使用せずに無限フォールドの評価を強制すると、スタック オーバーフローが発生することを読んだことがあります。確かに、それはスタックの存在を示しています。誰でも明確にできますか?
Haskell は「スタックレス」などではありません。Haskell ソースから生成されたコードにはまだ何らかのシンボルがあり、実行するといくつかのスタック トレースが表示されますが、それらはソース コードと非常に緩やかに関連しています。デバッグ/トレース/プロファイリングを簡素化する試みに関する情報を次に示します。
http://www.haskell.org/wikiupload/9/9f/HIW2011-Talk-Marlow.pdf