Skip to content

MS_FSharp

nishi_74322014 edited this page Aug 11, 2026 · 1 revision

F Sharp

概要

移行メモ: 元ページは見出し(概要 / 詳細 / 参考)のみで、
本文が書かれていない(未執筆のページだった)。
ここでは移行にあたり、他の .NET言語 系ページと
揃う程度の基本事項を補って記述する。

F# は、.NET 上で動作する関数型プログラミングを主体としたマルチパラダイム言語

  • Microsoft Research の Don Syme が設計し、2005 年に公開。
  • OCaml(ML 系)の影響を強く受けている。
  • オープンソース(F# Software Foundation と Microsoft が共同で開発)。
  • C# と同じ .NET 上で動くため、相互にライブラリを利用できる

詳細

特徴

特徴 内容
関数型ファースト 関数が第一級。副作用のない記述を既定とする
既定でイミュータブル let で束縛した値は変更できない(mutable を明示すれば可)
強力な型推論 型注釈をほとんど書かずに静的型付けの恩恵を受けられる
判別共用体(Discriminated Union) 「取りうる状態」を型で表現できる
パターン マッチング 網羅性をコンパイラが検査する
オフサイド ルール インデントでブロックを表す({} を使わない)
null を基本的に扱わない Option 型で「値が無い」ことを表す

C# との使い分け

補足: F# は C# の置き換えではなく、
得意分野が異なると捉えるのが実務的である。

向く領域 理由
ドメイン モデリング 判別共用体で「ありえない状態を表現できなくする」ことができる
金融・数値計算 単位付き数値(Units of Measure)、簡潔な数式表現
データ処理・分析 パイプライン演算子 |> による変換の連鎖。F# Interactive で試行しやすい
パーサ・コンパイラ 再帰的なデータ構造とパターン マッチが噛み合う

逆に、UI フレームワーク(Windows Forms / Blazor など)の
テンプレートやツール支援は C# 前提のものが多く、
チーム全体の学習コストも判断材料になる。

なお、C# 側にも F# 由来の機能が取り込まれ続けている
(パターン マッチング、record、switch 式など)。

コード例

// 判別共用体:取りうる状態を型で表す
type Shape =
    | Circle of radius: float
    | Rectangle of width: float * height: float

// パターン マッチング(網羅性はコンパイラが検査)
let area shape =
    match shape with
    | Circle r        -> System.Math.PI * r * r
    | Rectangle (w, h) -> w * h

// パイプライン演算子
[1..10]
|> List.filter (fun x -> x % 2 = 0)
|> List.map (fun x -> x * x)
|> List.sum
|> printfn "%d"

参考


Tags: 移行, .NET開発, プログラミング

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally