タプルのシーケンスを csv に書き込もうとしていますが、通常の File.WriteAllLines はタプルのシーケンスによってオーバーロードされています。
したがって、タプルを一連の文字列にフラット化しようとしました。
これが私のコードです:-
open System;;
open Microsoft.FSharp.Reflection;;
let tupleToString (t: string * float) =
if FSharpType.IsTuple(t.GetType())
then String.Format("{0},{1}", fst t, snd t)
else "";;
let testTuple = ("monkey", 15.168);;
tupleToString(testTuple);;
let testSeqTuple = [("monkey", 15.168); ("donkey", 12.980)];;
let allIsStrings (t:seq<string * float>) = Seq.collect tupleToString t;;
allIsStrings(testSeqTuple);;
1 つのタプルだけで「tupleToString」を使用すると、結果は問題ありません。
ただし、allIsStrings の Seq.collect 部分は、文字ごとに分類されたタプルを返します。
Seq.choose と Seq.fold も試しましたが、これらは単純にエラーをスローします。
シーケンスモジュールのどの関数を使用する必要があるか、またはタプルで機能する File.WriteAllLines の代替案についてアドバイスできますか?