我認爲有更好的方法來交換列表中的項目([1; 2; 3; 4] - > [2; 1; 4; 3 ]),因爲我爲我的喜好做了太多附加,但我不確定如何最好地做到這一點。交換F#列表中的每一對項目
let swapItems lst =
let f acc item =
match acc with
| [] -> [item]
| hd :: next :: tl when tl <> [] -> [next] @ tl @ [item;hd]
| _ -> item :: acc
List.fold f [] lst
我該如何改進?這隻適用於長度均勻的列表。
我認爲這樣做是稍微更優雅'功能| a :: b :: t - > b :: a :: t | a - > failwith「沒有足夠的元素」' –
brillant謝謝,並詛咒F#總是讓事情變得如此簡單;) – Dylan
@jpalmer,我不知道他爲什麼要這樣做,但我推測他也希望這個解決方案能夠處理奇數個元素的列表。 –