F# is not like Ruby/Python at ALL. F# is statically typed for one, variables are by default immutable, let me give you an example, tell me what you think the following prints?
let somefunc() =
let i = 10
i = 11
printfn "%s" (somefunc().ToString())
it prints "false", not 11.F# is a lot like ocaml, which it was syntax compatible with for many years.
Most developers in the non-web sphere are dealing with multi-core and async issues. F# solves these problems very elegantly.