最新のF#のリリースを掘り下げながら、PLINQとのやりとりを試みました。 しかし、私は2つがコードワイズで一緒にとてもうまく動作しないことに気づいた。 System.Linq.ParallelEnumerableクラスに含まれてParallelQueryのための拡張メソッドは、F#のでピックアップを取得していないようでしたので、F#とPLINQの拡張方法
open System.Linq
let someArray = [|"abc"; "def"|]
someArray.AsParallel().Count(new Func<_,_>(fun s -> s.Length = 3))
: 実際には次のようなコードを記述することができていないようでした。
IEnumerableに定義されているsomeArray.Count拡張メソッドにアクセスできるため、拡張メソッドのサポートがまったくないと驚くことはありませんが、なぜPLINQのものにアクセスできないのでしょうか?
何か不足していますか?
これはF#の制限ですか?もしそうなら、それはdesingですか?そうでない場合は、今後のリリースで対処される予定ですか?
署名は( 'T - >' Uオプション) - > 'T array - >'配列であるので、あなたは私に解決策を与えました:AsParallelで型を指定するので、その方法を選択することはできません。実際にはそうでなければ、非ジェネリック版が返されているように見えます。最後に、私はSeq、配列、および他のモジュールがF#で優先されることを知っていますが、いくつかの状況では、配列ではなく、Array.Parallelが提供しないものが必要な場合があります。 – em70
私の悪い、これはしません。 AsParallelを使用した後、拡張メソッドが選択されると、コンパイラは適切なオーバーロードを解決できないため役に立たない。( –
em70
Array.chooseエラーについてお詫び申し上げます。投稿した直後に私はそれを見つけましたが、正しいバージョンに編集する前に見つけました。 ;) FYI-in F#、SeqモジュールはIEnumerableを処理し、seqタイプはIEnumerableと同義です。 –