FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

プログラミングの末尾再帰を勘違いしていた?!

C系の言語ではfor文は直感的でなく、破壊的代入を行うので参照透明ではなく、アルゴリズムを書くため低水準な操作といえる。関数型言語ではそれを嫌い、関数の再帰で繰り返しに相当する操作を行う。

末尾再帰は末尾に自身の関数を書けば最適化されて高速だと思っていた。ところが状態に相当するものを関数の引数として受け渡しして、パターンマッチでその値を返さないと、最後に呼び出した関数から最初に呼び出した関数にjumpしてくれなさそうだ。そういえばそんなコードで末尾再帰を習ったが意味を理解していなかった。最後に呼び出される関数が値を直接返さずに、上の関数に値を返すと、関数のアドレスを覚えておいて巻き戻す必要がある。ということは、末尾は関数一つの項だけである必要がある。
これを読んでいて勘違いに気付いた。
新しい記事でかなりまとまっていて入門しやすく感じる。数年前は検索に古いページしか引っかからなかったのに、年月が経つのは良いことだ。Haskellのデバッグの速さと、短く単純にコードが書けることに対して、どんどん注目が大きくなっているようだ。
関連記事

コメント

非公開コメント

名前

John Stuart Smith

Author:John Stuart Smith

更新率

今まで見てくれた人数

今見ている人数

現在の閲覧者数:

検索Form

アクセスランキング

[ジャンルランキング]
ブログ
11045位
アクセスランキングを見る>>

[サブジャンルランキング]
その他
3005位
アクセスランキングを見る>>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。