1
私は、コメントスレッドのリストの形で再帰的なデータ構造を持っています。各コメントには0個以上の返信(コメント)を含めることができ、各返信には0個以上の返信を含めることができます。私はコメントスレッドのこのリストをフラット化する関数を書こうとしています。つまり、コメントスレッドのリストが与えられていると、すべてのコメントは返信なしに "トップレベル"のコメントとして返されます。私はこれのための関数を書いたが、それは動作しません、それは空のリストを返します。再帰的データ構造のフラット化
type Comment =
{ Text : string
Score : int
Replies : Comment list }
let flattenReplies ({ Comments = cs }) =
let rec flatten st =
match st with
| [] ->
st
| hd::tl ->
{ hd with Replies = [] }
:: tl
|> List.collect (fun c -> flatten c.Replies)
cs
|> Seq.toList
|> flatten