Итак, я просмотрел этот тур по F #: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/tour
... и мальчик howdy F # интересный! В самом начале тура определена выборочная функция, которая выглядит довольно просто:
/// You use 'let' to define a function. This one accepts an integer argument and returns an integer.
/// Parentheses are optional for function arguments, except for when you use an explicit type annotation.
let sampleFunction1 x = x*x + 3
Так что это имеет смысл для меня. Он определяет, что такое функция, если я должен был передать некоторое число в эту вещь, она квадратизирует ее и добавляет 3 к этому результату, как видно из следующей строки в туре:
/// Apply the function, naming the function return result using 'let'.
/// The variable type is inferred from the function return type.
let result1 = sampleFunction1 4573
После нескольких минут размышлений я пришел к выводу, что С# тоже может это сделать! Я уверен, действительно люблю С#. Это то, что выше было бы похоже на С#, насколько я могу судить:
Func<int, int> sampleFunction1 = x => x*x + 3;
var result = sampleFunction1(4573);
Итак, мой главный вопрос: в чем разница между тем, что я написал на С#, и тем, что показал мне тур F #? Подзапросы: Является ли код IL каким-либо другим, даже если он такой же CLR? Каковы некоторые причины, по которым я буду использовать F # над С#?