Skip to content

アルゴリズムから始める F# 入門

F# を使ってアルゴリズムとデータ構造を TDD で学ぶシリーズです。

章構成

第 1 部: 基本

テーマ
第 1 章 基本的なアルゴリズム 3 値の最大値・中央値、条件判定、繰り返し処理、多重ループ
第 2 章 配列 配列の基本操作、基数変換、素数列挙
第 3 章 探索アルゴリズム 線形探索、二分探索、ハッシュ法

第 2 部: データ構造

テーマ
第 4 章 スタックとキュー スタックの実装、キューの実装
第 5 章 再帰アルゴリズム 再帰の基本、再帰の応用、8 クイーン問題

第 3 部: ソートと文字列

テーマ
第 6 章 ソートアルゴリズム バブル・選択・挿入・シェル・クイック・マージ・ヒープ・度数ソート
第 7 章 文字列処理 BF/KMP/BM 探索、文字数カウント、逆順、回文

第 4 部: 高度なデータ構造

テーマ
第 8 章 リスト 単方向リスト、双方向リスト、配列カーソル版リスト
第 9 章 木構造 二分探索木、走査(前順・中順・後順)

実装コード

実装コードは apps/fsharp/ にあります。

テスト実行

nix develop .#dotnet
cd apps/fsharp
dotnet test

F# の特徴

F# は .NET プラットフォーム上で動く関数型ファーストの言語です。

特徴 説明
不変性デフォルト 変数はデフォルトで不変。変更には mutable が必要
パターンマッチ match ... with で複数条件を簡潔に表現
パイプライン演算子 \|> で処理の流れを左から右に記述
型推論 型注釈なしでもコンパイラが型を推論
判別共用体 type Shape = Circle of float \| Rect of float * float
オプション型 option<T> で NULL 安全な実装

参考文献

  • 『新・明解 アルゴリズムとデータ構造』 — 柴田望洋
  • 『テスト駆動開発』 — Kent Beck
  • F# ドキュメント