I really think F# benefits from being part of .NET instead of a stand-alone language. C# is probably better for designing a system, where you have a bunch of components swimming around talking to each other and maintaining state and dealing with the outside world and whatnot. F# is better for designing a process that takes input and produces output. That F# process can then be part of a C# system. That lets the F# team not have to worry so much about the system-y stuff, and design a tighter, more-focused language. (Ditto C#--from one point of view, .NET allows F# to be a DSL for C#).