почему ранее определенные методы не доступны в модуле в fsharp? - PullRequest
1 голос
/ 01 марта 2012

Seq.toMap не распознается при внутреннем вызове функции toMap2

open System
open Microsoft.FSharp.Collections

module Seq =
   let toMap(seqinit:seq<'a*'T>) = 
      seqinit |> Map.ofSeq

   let toMap2(seqinit:seq<'a*seq<'b*'T>>) = 
      seqinit |> Seq.map (fun (key1 ,seq1) -> (key1, seq1 |> Seq.toMap )) 
              |> Map.ofSeq

ОБНОВЛЕНИЕ

лучший функциональный код будет (с исходной решенной pbкак предложил Рамон Снир)

let inline (||>) (seqinit:seq<'a*'T>) f = 
       seqinit |> Seq.map  (fun (key1 ,seq1) -> (key1, seq1 |> f ))

let toMap  (seqinit:seq<'a*'T>)                 =  seqinit |> Map.ofSeq
let toMap2 (seqinit:seq<'a*seq<'b*'T>>)         =  seqinit ||> toMap  |> toMap
let toMap3 (seqinit:seq<'a*seq<'b*seq<'c*'T>>>) =  seqinit ||> toMap2 |> toMap

1 Ответ

2 голосов
/ 01 марта 2012
open System
open Microsoft.FSharp.Collections

module Seq =
   let toMap(seqinit:seq<'a*'T>) = 
      seqinit |> Map.ofSeq

   let toMap2(seqinit:seq<'a*seq<'b*'T>>) = 
      seqinit |> Seq.map (fun (key1 ,seq1) -> (key1, seq1 |> toMap )) |> Map.ofSeq

Вам не нужен квалифицированный доступ в модуле.Просто позвоните toMap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...