私は2つのリストを取り、それらをList.collectを使って結合する関数を定義しようとしています。List.collectを使用してf#
let concat xs xs' =
let concatList = List.collect xs xs'
printfn "%A" concatList
concat [1;2;3;4] [5;6;7;8]
私は、エラーメッセージが表示されます: FS0001:この式は、型を持つことが期待された「」A->「Bリスト「」
をCリスト「をここ だが入力した」私はこのことを読みますパラメーターが不足している可能性がありますが、これについてはわかりません。
EDIT:
だから私はちょっとそれはこのように動作するようになった:
let concat xs xs' =
let concatList = List.collect (fun x -> xs @ xs') xs
printfn "%A" concatList
concat [1;2;3;4] [5;6;7;8]
しかし、出力は次のとおりです。[1。 2; 3; 4; 5; 6; 7; 8; 1; 2; 3; 4; 5; 6; 7; 8; 1; 2; 3; 4; 5; 6; 7; 8; 1; 2; 3; 4; 5; 6; 7; 8;]
[1; 2; 3 4; 5; 6; 7; 8;] それは何度も何度実行されますか?
EDIT 2:
だから私はそれがこのように働いてしまった:あなたがコメントで述べたように
let concat xs xs' =
let combList = [[xs];[xs']]
let concatList = List.collect id combList
printfn "%A" concatList
concat [1;2;3;4] [5;6;7;8]
これは 'List.collect'とは異なります。あなたは 'List.concat'を意味しましたか? –
私はList.concatがもっと理にかなっていると思いました。しかし、それを使わないように言われています。 List.collectについて読んでください: "リストの各要素に対して、与えられた関数が適用されます。すべての結果を連結し、結合されたリストを返します。 – kthonenice
それで問題は何ですか? –