末尾再帰最適化の保証がないと関数型スタイルにはできん