匹配列表的前两个元素

Art*_*his 6 f#

我有一个清单:

[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)