open System type ArraySegment<'TItem> with member segment.Item(index) = segment.Array.[segment.Offset+index] member segment.GetSlice(start, finish) = let start = defaultArg start 0 let finish = defaultArg finish segment.Count ArraySegment(segment.Array, segment.Offset + start, finish-start) let xs = ArraySegment [|1..10|] let ys = xs.[3..] let zs = ys.[..2] let five = zs.[1]