TL;DR

クロスプラットフォームで動く、静的型付けの関数型プログラミング言語。OCaml をもとに開発された。

なぜ必要か

簡潔で堅牢、かつ性能の高いコードを書くための言語である。プログラミングの細部ではなく、問題のドメインに集中したまま、整理された自己文書化的なコードを書ける。オープンソースで、.NET の資産と相互運用できる。

仕組み

軽量な構文、デフォルトで不変な値、型推論と自動ジェネリック化、第一級関数、パターンマッチ、非同期プログラミングなどの機能を持つ。レコードや判別共用体でデータを表し、パターンマッチと組み合わせると、すべてのケースを扱っているかをコンパイラが確かめてくれる。オブジェクトも完全にサポートしている。

例

let names = [ "Peter"; "Julia"; "Xi" ]
 
let getGreeting name = $"Hello, {name}"
 
names
|> List.map getGreeting
|> List.iter (fun greeting -> printfn $"{greeting}! Enjoy your F#")

関連

出典