私はocamlを学び始めており、実際には言語の再帰の力に感謝しています。しかし、私が心配していることの1つはスタックオーバーフローです。関数型言語のプログラムはスタックオーバーフローを起こしやすいでしょうか?
ocamlが関数呼び出しにスタックを使用する場合、最終的にスタックをオーバーフローしませんか?たとえば、次の関数があるとします。
let rec sum x =
if x > 1 then f(x - 1) + x
else x;;
最終的にスタックオーバーフローが発生する必要があります。私がC++で(再帰を使用して)同等のことをしなければならない場合、私はそれがオーバーフローすることを知っています。
私の質問は、機能的な言語がスタックをオーバーフローするのを防ぐためのセーフガードが組み込まれているということですか?もしそうでなければ、forループで手続き型で書かれた上記の加算アルゴリズムは、任意の数(dis-に関する整数オーバーフロー)を扱うことができるので、あまり有用ではないでしょうか?
ちょっと!それはサイトの名前です。 – kornfridge