As others have said, F# addresses these issues. The main complaint I have with F# is when using other dotnet libraries you end up having to deal with things like nulls again, which can make the F# feel more cumbersome than it should be. I still like it though.
My main complaint is that after all these years, Microsoft's management still seems not to have a clear picture what they want it for, althought it seems to have replaced Visual Basic in feature love for newer .NET versions.
I worked in Azure for four years in a couple different teams. I didn't see a single line of F# code while I was there. I don't think they have any plan beyond supporting it as somebody's side project.