在 F# 中计算列表中未更改的元素数量

Tho*_*mas 2 f#

我有一个简单的清单:

let l = [ 1; 1; 1; 1; 2; 1; 1; 1 ]
Run Code Online (Sandbox Code Playgroud)

我想知道有多少元素与第一个匹配,没有中断(示例中为 4)

let mutable i = 0
while l.[i] = l.[0] do
    i <- i + 1
Run Code Online (Sandbox Code Playgroud)

但是有没有更符合 F# 习惯的方法来做到这一点?通过列表功能之一?

Boh*_*pak 6

let l = [ 1; 1; 1; 1; 2; 1; 1; 1 ]
let res = 
    l
    |> Seq.takeWhile(fun i -> i = l.Head)
    |> Seq.length
Run Code Online (Sandbox Code Playgroud)