スタックオーバーフローって

Haskellで普通に書かれたプログラムの入力サイズがでかくなったら
スタックがあふれるという件を調査中だ。
どこからともなくメモリがあふれたり、
スタックがあふれたりすることがあるが、
遅延評価ゆえによく分からない。
メモリがどう使われているか、あるいはどのように計算が行われているのかなど、
一切分からなくてもプログラムが書けるというのがある意味での
Haskellのメリットではあると思うが、
そこが分からないと実はその計算はスタックがあふれるかもしれないとか、
そうでないかもしれないとか、その辺が分からない。
実際に現実にありうる程度の入力で落ちてしまう場合など、非常に致命的だ。
そういうわけで、ここはやはり調査すべきであろうと思われるが、
正格性評価を使わねば一般的に回避不可、などと結論が出たらどうしようかと思う。
分かりやすい方法で回避策を見出さねばならないと思うのだが、
そもそも原因が分かりにくいという時点で分かりにくいという話なんだろうか。