F#を4ヶ月ほど学んでみて

今年に入って新しい言語を学ぶかということで F#の勉強を初めて 4ヶ月ほど経ったので現状のまとめ。 やったことは主に小さいプログラムを書いたり, LeetCodeの問題を 100問ほど解いたという程度(LeetCodeは現状 F#未対応なので対応してほしい)。

結論としては始めるのが楽で学ぶ価値のある言語だと考えています。

書いたもの

良い点

  • セットアップが楽
    • .NET SDKを入れて PATHが通って入ればどの環境(Win, macOS, Linux)でも始められる。あとはVSCodeに Ionide拡張を入れるだけで OK.
  • 1ファイルからコードを書ける
    • いちいちプロジェクトを作らなくても .fsxファイルを作って書き始められるのが良い
  • REPLベースの開発
  • Java系言語に比べるとだいぶ軽い
    • 気楽にやるにはすぐに REPLなど立ち上がってほしいので.
  • 標準ライブラリの APIシグネチャの統一感
    • パイプライン演算子を使うことが意識された引数の並び。
  • ライブラリの豊富さ
    • .NETはライブラリが豊富

いまいちなところ

現状特に不満はないですが、しいてあげるなら

  • 公式ドキュメントが複数ヶ所にある
    • 言語のドキュメントは Microsoftにあるけど, 標準ライブラリのドキュメントは githubにあったりと一つの場所にまとまっていない
  • Ionide拡張の REPL連携
    • Emacsだったらカーソル位置の関数を REPLに送るとか様々な単位で REPLに送れるのだけど, 行かリージョンかファイル全体かと大雑把な区切りしかない。特にカーソル位置の関数は欲しいかな
  • formatter
    • fantomasというのがあり, それを使えばいいのだけど無駄に空行があったり改行があったりあまり好きじゃない。まあ統一されているのが重要なので大したことはないのですが。

言語を学んで

普段は C++とか Rustとか C#を書いているのですが, immutable dataが基本でループでなく再帰を使うというのは良い刺激になっていると思います。 副作用を使えると一つのことにいろいろ詰め込んで書けてしまうけど, そうではなく副作用がないように分割して考えるということを意識するようになったように思えます。現状アルゴリズム的なものを中心に書いてきたので今後はアプリケーションなり実用的なものを書いていければなと思っています。