単一代入と末尾再帰

RWH (Real World Haskell) では末尾再帰 (tail recursion) がサラッと説明無しに出てきたので、
RWH は少し離れて、末尾再帰について少し調べていた。

第2回 「単一代入」と「末尾再帰」 | 日経 xTECH(クロステック)

「関数が返ってきた後にする処理」がなければ,関数呼び出しは単なるgotoとしてコンパイルできる。そのような「後にする処理」がない関数呼び出しのことを「末尾呼び出し」という。特に,すべての再帰呼び出しが末尾呼び出しであるような再帰関数のことを「末尾再帰関数」という。

この連載は ML / OCaml で説明されているのだけど、考え方は変わらないので参考になった。
末尾再帰だけでなく、単一代入もセットで説明されているので、関数型言語の勉強のとっかかりに良い。

連載の他の回も参考になりそうだが、読むのは後に回して RWH に戻ることにする。