在F#中分块列表时我做错了什么

Tri*_*Gao 2 f#

F#对我来说并不容易.下面这段代码应该是一个列表.我不知道问题是什么.请帮忙.

let chunk items chunkSize =
    let folder = fun state x ->
        match state with (reversedResult, reversedChunk) ->
            if reversedChunk.Length < chunkSize then
                (reversedResult, x::reversedChunk)
            else
                ((reversedChunk |> List.rev)::reversedResult, [x])
    let alsmostDone = items |> List.fold folder ([], [])
    match alsmostDone with
    | (reversedResult, []) -> reversedResult |> List.rev
    | (reversedResult, lastReversedChunk) -> (lastReversedChunk |> List.rev)::reversedResult |> List.rev
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Lar*_*ars 6

我认为使用List.length有点"惯用"f#.然后你不需要任何类型的注释.所以:

...
if List.length reversedChunk < chunkSize then
...
Run Code Online (Sandbox Code Playgroud)