言及するが、スタック安全性に関してより抜本的な解法を提示している。コンパイラが自己再帰の末尾再帰呼び出しは最適化することが可能だ。これは自己再帰の末尾再帰呼び出しの例だ。8自己再帰じゃない例。スタックオーバーフローを起こしている。モノイドを使って計算をさせてみたい。値が大きいとスタックオーバーフローするようになってしまった。呼び出すといった形のモナディック合成の便利さを制限するものだ。対象を任意のモナドから、いわゆる末尾再帰モナドとよばれる型クラスに候補を狭めたことだ。末尾再帰であると言うことができる。提供しなければいけないことも意味している。