我有一个清单:
[objA; objB; objC; objD]
我需要做以下减少:
obj - > obj - > obj
即:
objA objB - > objB'
然后收回原始列表,以便我得到:
[objB'; objC; objD]
我正在尝试执行以下操作:
let rec resolveConflicts = function
| [] -> []
| [c] -> resolveConflict c
| [x;y] -> resolveConflict x
|> List.filter getMovesRelatedtoY
|> List.append y
|> resolveConflict
| [x;y::tail] ->
let y' = resolveConflict x
|> List.filter getMovesRelatedtoY
|> List.append y
resolveConflicts y'::tail
Run Code Online (Sandbox Code Playgroud)
这种语法不正确,可能是我甚至没有使用正确的工具......我对任何合适的解决方案持开放态度,以便我可以学习.
至于为什么,我过滤列表并将一个追加到另一个,只是每个冲突都是一个移动列表.
Sav*_*xey 15
要匹配第一个元素,第二个元素和列表的其余部分,请使用以下模式:
| fst::snd::rest ->
Run Code Online (Sandbox Code Playgroud)
您可以使用此样式匹配任意数量的第一个元素:
| fst::snd::thrd:: ... ::rest ->
Run Code Online (Sandbox Code Playgroud)