F# 4.6の話

忙しくて書く余裕がなかったF# 4.6についてです。といっても機能追加は小粒なのでさくっといきましょう。 間違ってたら指摘をお願いします。

ちなみにこの記事を書いている時点における最新の FSharp.Core は 4.6.2です。

FS-1030

https://github.com/fsharp/fslang-design/blob/7240c64de3e85f69de872b1f0a7db4d91f7a7e1a/FSharp-4.6/FS-1030-anonymous-records.md

anonymous recordsはC#に存在するanonymous objectsのレコード版ですね。 これまでASP.NET CoreなどのC#フレームワークをF#で触ったりするとanonymous objectsが前提となっていた部分が煩雑でしたが、これでいい感じに書けるようになります。

FS-1065

https://github.com/fsharp/fslang-design/blob/7240c64de3e85f69de872b1f0a7db4d91f7a7e1a/FSharp.Core-4.6.0/FS-1065-valueoption-parity.md

4.5で導入されたvalue option用の関数やメソッドが追加されます(なぜ4.5で入らなかったのと突っ込んではいけない)。 あとDebuggerDisplay属性も付与されるようです。

FS-1066

https://github.com/fsharp/fslang-design/blob/7240c64de3e85f69de872b1f0a7db4d91f7a7e1a/FSharp.Core-4.6.0/FS-1066-tryExactlyOne.md

array, seq, listにtryExactlyOne関数が追加されます。 コレクション中に要素が1つしかなかった場合にその要素をとりだすexactlyOne関数のoption版ですね。

おわりに

マイナーバージョンアップなのでこんなものでしょうと思うべきか、もうちょっと頑張ってほしいと思うべきか…それはともかくとして、ちゃんと改善はされていってるのは良い事だでしょう。 RFCsフォルダに未だリリースされていない仕様がたまってきているのでそろそろリリースされないかなぁ。