I'm not sure that looking at the two lists from MSDN necessarily gives a fair comparison. Note that the F# table lists anything where a symbolic character is used as part of an expression - this includes things like string literals "
, comments ///
, pre-processor directives #
, quotations, syntax for generics and many others. On the other hand, the C# reference only lists operators (though there are a few keywords too).
It is true that F# has a few more operators than C#, but I don't think the difference is as huge as you might think. The most notable are:
- Operators for working with functions like
>>
and |>
(and variations on those)
- Operators for working with lists like
::
(prepend element) and @
(concatenation)
Operators for dealing with nullable values (many with ?
on some side), though I think of these more as workarounds to enable LINQ interop than fundamental operators of F#
There are a few operators for mutable ref cells :=
and !
- I think these are mainly ML heritage and you don't really need them as often.
So, I think the main thing is that F# just has a few more data types that are at the core of functional programming and it has operators for working with them (especially functions and lists). On the other hand, a couple of the things from the C# list (typeof
, sizeof
, delegate
and also +=
and such are either functions in F# or are not needed at all).