I define two functions, one with and one without a flexible type:
let concatA = Seq.concat // ... : seq<#seq<'b>> -> seq<'b>
let concatB = concatA : seq<seq<'b> -> seq<'b>
Is there a context in which I can use one but not the other?
My understanding is that flexible types are helpful for functions f: #B -> #B, where the type guarantees that (f (x : D)) : D for any D derived from B. I don't see how the flexible type is helpful for Seq.concat?
(I chose Seq.concat as an example because its used in the documentation for Flexible Types uses it, but using concatB in that example still seems to type everything.)