末尾再帰

rui314 さんからフォロー頂いたので、べき乗の末尾再帰版を書いてみた。ご紹介頂いたのは Efficiency Guide3.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