我想定義一個函數,它需要兩個列表並將它們組合使用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名單」
,我讀了這可能是由於缺少參數,但我不確定這一點。
編輯:
所以我有點懂了這樣的工作:
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;] 任何想法,爲什麼它運行很多次?
編輯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
那麼問題是什麼呢? –