型の不一致再帰的な処理リストとリストのサブリストは、私がリストやサブリスト レイアウトに分岐図を配置しよう
- msg01
- msg02
- msg03
- msg04 さを与えます
- msg05
と私は分岐図の一番上を歩きたい - >下は各支店 に入るが、それは
エラータイプの不一致で失敗します。
('a * 'b list) list
を期待しかし「'a
」と「'b * 'a list
」
を統合する際'b list
与えられた結果の型は無限になることは誰もがこれを修正することができるもの私にいくつかのアイデアを与えることはできますか?さまざまな種類があり
open System
let msgDiagram1 = [ ("msg03",[]); ("msg04",[]) ]
let msgDiagram = [ ("msg01", []); ("msg02", msgDiagram1); ("msg05",[]) ]
let listToString lst =
let rec loop acc = function
| [] -> acc
| x::xs -> let node = x
let sublst = snd(node)
if not (sublst = List.empty) then
loop "" sublst
else
loop (acc + (string x)) xs
loop "" lst
printfn "%A" (listToString msgDiagram)
@padは以下のように、これをツリーとして構造化したいと思っています。 F#でツリーデータを構造化する方法と、それを操作する方法については、このブログの を参照してください。 –