Just found out that with f# sub-strings can be defined as slices:
let s = "the quick brown fox"
s.[4..8] // returns a string!
val it : string = "quick"
The remarkable thing is that the slice expression returns a string, not a char collection. I thought that strings in F# core implement GetSlice, which would return a string, but that is not the case:
https://github.com/dotnet/fsharp/blob/main/src/fsharp/FSharp.Core/string.fs
So I really wonder what happens here? Which function is called for the slice operation?