回答編集履歴
2
誤字の修正
answer
CHANGED
@@ -2,6 +2,6 @@
|
|
2
2
|
|
3
3
|
[なぜ Haskell ではキューが軽んじられているか? - あどけない話](http://d.hatena.ne.jp/kazu-yamamoto/20121107/1352259739)
|
4
4
|
|
5
|
-
上記記事では幅優先探索を再帰関数で実装しています(そもそもHaskellにはループ構文がないので再帰で書くしかないのですが)。キューの代わりに木を使ってそれを探索するようにしているようです。(細かい所は追ってないので
|
5
|
+
上記記事では幅優先探索を再帰関数で実装しています(そもそもHaskellにはループ構文がないので再帰で書くしかないのですが)。キューの代わりに木を使ってそれを探索するようにしているようです。(細かい所は追ってないので私も詳しくは説明できないです)
|
6
6
|
|
7
7
|
ただ、この実装は余再帰というものを使っています。遅延評価であるHaskellでは問題ないようですが、正格評価であるC/C++ではスタックオーバーフローを起こす場合があるため、使えないと思われます(末尾再帰最適化すらできないJavaは論外)。
|
1
補足
answer
CHANGED
@@ -2,6 +2,6 @@
|
|
2
2
|
|
3
3
|
[なぜ Haskell ではキューが軽んじられているか? - あどけない話](http://d.hatena.ne.jp/kazu-yamamoto/20121107/1352259739)
|
4
4
|
|
5
|
-
上記記事では幅優先探索を再帰関数で実装しています(そもそもHaskellにはループ構文がないので再帰で書くしかないのですが)。キューの代わりに木を使ってそれを探索するようにしているようです。
|
5
|
+
上記記事では幅優先探索を再帰関数で実装しています(そもそもHaskellにはループ構文がないので再帰で書くしかないのですが)。キューの代わりに木を使ってそれを探索するようにしているようです。(細かい所は追ってないので渡しも詳しくは説明できないです)
|
6
6
|
|
7
7
|
ただ、この実装は余再帰というものを使っています。遅延評価であるHaskellでは問題ないようですが、正格評価であるC/C++ではスタックオーバーフローを起こす場合があるため、使えないと思われます(末尾再帰最適化すらできないJavaは論外)。
|