let aString = "string"
let stringResult = aString |> Seq.map (fun c -> Char.ToUpper(c)) // returns seq<char>, not String, not expected
let listResult = aString |> Seq.map(fun c -> int c) // returns seq<int> as expected
And in both cases you specifically had to point out the function that F# uses and you lost type information in the first case.
I don't agree with your comments on erasure & type classes. The reified types wouldn't help Scala one bit to achieve their collection library. (I'm not saying that reified types aren't usefull, just that they don't help here)
And I see now that by functional datastructures, they mean efficient persistent datastructures. So, does F# have datastructures (Lists, Sets, Maps) that are immutable and have a very efficient (close to O(1)) update and delete operations?