F #의 최신 릴리스를 자세히 살펴보면서 PLINQ와의 상호 작용을 시도했습니다. 그러나 저는이 두 가지가 코드 단위로 잘 작동하지 않는다는 것을 알아 챘습니다. 사실 그것은 다음과 같은 코드를 작성하는 것이 가능 보이지 않았다 다음 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, Array 및 다른 모듈이 F #에서 선호된다는 것을 알고 있습니다. 그러나 여러 상황에서 배열이 아니거나 Array.Parallel에서 제공하지 않는 것을 원할 수도 있습니다. – em70
내 잘못했다. AsParallel을 사용한 후에 확장 메서드가 선택되면 컴파일러는 적절한 과부하를 해결할 수 없으므로 쓸모가 없습니다. ( –
em70
Array.choose 오류에 대해 사과드립니다.나는 게시 한 직후에 그것을 발견했지만 정확한 버전으로 편집하기 전에 발견했습니다. ;) FYI-in F #, Seq 모듈은 모든 IEnumerable을 처리하며 seq 유형은 IEnumerable과 동의어입니다. –