PureScriptの末尾再帰最適化
はじめに
年が明けてますが、PureScript Advent Calendar 2017 - Qiitaの19日目の記事にしてしまいます。
PureScriptは末尾再帰最適化ありますが、モナディックな再帰は最適化されません。 よって、何も考えないと稀に、コールスタックに積み上がりすぎてエラーが起こるという状況に遭遇するかもしれません。 というか私は遭遇しました。 そんなときのためのパッケージを紹介します。
紹介
- GitHub - purescript/purescript-tailrec: A type class which captures stack-safe monadic tail recursion
- GitHub - paf31/purescript-safely: A combinator for making any monadic control operator stack-safe
後者はtailrecをラップしたパッケージです。
これらを使って書き直すと、きっとエラーが起こらなくなるはずです。
さいごに
サンプルコード書こうかと思ったけど、まぁREADME読めばわかるしええやろ、という気持ちで手抜きの記事となりました。