Когда я запускаю следующий бит кода, я получаю 5050 от mySum. Я определил mySum, но никогда не вызывал его. Как он может печатать вообще? Возможно, это странно, потому что мой фон - Haskell, и я привык передавать монаду IO, чтобы что-то делать - как/когда вещи оцениваются в F #?Почему printfn печатает сразу в f #?
type main = obj [] -> int
let mySum = [1..100] |> List.sum |> printfn "%i"
[<EntryPoint>]
let main argv =
0
Это настолько странно. Что такое ценность? Не 5 функция, которая возвращает 5? Очень различная парадигма. – Carbon
Если '5' была функцией, которая возвращает' 5', то не будет ли вторая секунда '5' также функцией, которая возвращает' 5' и т. Д.? В какой-то момент у вас должны быть значения. Вы случайно приехали из Хаскелла? –
Мое личное мнение из моего очень ограниченного (и не очень положительного) опыта с Haskell заключается в том, что для первого попадания в F # мышление Haskell не очень полезно, потому что языки действительно имеют несколько разные подходы. Самое главное, что нужно знать о том, что в отличие от Haskell, F # не является чистым функциональным языком. Как только F # и его конкретные «причуды» станут более естественными, мышление Haskell, вероятно, снова станет более ценным. – TeaDrivenDev