F# chunk a sequence into fixed-size lists

F#
let chunk (size: int) (source: seq<'T>) : seq<'T list> =
    if size <= 0 then invalidArg "size" "chunk size must be positive"
    seq {
        let batch = ResizeArray<'T>()
        for item in source do
            batch.Add item
            if batch.Count = size then
                yield List.ofSeq batch
                batch.Clear()
        if batch.Count > 0 then yield List.ofSeq batch
    }

let firstThree = chunk 3 [ 1 .. 7 ] |> Seq.head