このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

リスト構造とリスト処理

なぜ、リストの自作は良い練習問題なのか?

  1. 典型的なデータ構造とメモリーイメージに慣れる。
  2. ポインタ・参照の操作に習熟できる。
  3. 再帰処理が理解できる。
  4. データのミュータビリティ、破壊的変更(上書き)と非破壊的操作(修正しながら転写)を理解できる。
  5. 双方向リストやツリーに一般化できる。
  6. さらに有向グラフ処理にも応用できる。有向グラフ処理はアルゴリズムの王様だろう。
  7. 代数的データ構造に発展する。
  8. 無限リストの遅延評価によるストリーム、イテレータなど。
  9. リストモナドは、モナドの典型例。
  10. 総称プログラミングでも良い例題。length, zipの一般化
  11. 再帰から、map, foldへ。さらに一般化forld
  12. 最近では、MapReduceによる並列処理。

リストは、実用上も理論上も、常にデータ構造の中核にあって、今でも新しい話題を提供している。例:http://d.hatena.ne.jp/m-hiyama/20130827/1377583720 に紹介した論文: