F#の最新リリースを深く掘り下げながら、PLINQと相互作用させようとしました。ただし、コード的には、この2つがうまく連携していないことに気づきました。実際、次のようなコードを書くことは不可能のようでした。
open System.Linq
let someArray = [|"abc"; "def"|]
someArray.AsParallel().Count(new Func<_,_>(fun s -> s.Length = 3))
System.Linq.ParallelEnumerableクラスに含まれているParallelQueryの拡張メソッドがF#によって取得されていないようだったためです。
拡張メソッドがまったくサポートされていなくても驚かないでしょうが、IEnumerable用に定義されたsomeArray.Count拡張メソッドにアクセスできるので、なぜPLINQの拡張メソッドにアクセスできないのでしょうか。
私は何かが足りないのですか?
これはF#の制限ですか?もしそうなら、それはデザインによるものですか?そうでない場合は、将来のリリースで対処されますか?