末尾再帰
rui314 さんからフォロー頂いたので、べき乗の末尾再帰版を書いてみた。ご紹介頂いたのは Efficiency Guide の 3.3 Memory usage in recursion です。
手続きの名前は overload 可能らしい。
expt2(B, N) -> expt2(B, N, 1). expt2(_B, 0, Result) -> Result; expt2(B, N, Result) -> expt2(B, N - 1, Result * B).
ただ、ハマリかけたのは、上記の通り引数が二つのものは .(period) で定義を終わらせなければいけないらしい。
単体試験なソレは無いんかな。
追記
こんなのもあるな。
http://www.erlang.org/download/erlang-book-part1.pdf