次のコードを実行すると、mySumから5050が出力されます。私はmySumを定義しましたが、それを呼び出すことはありません。どのようにして印刷することができますか?たぶんこれは私の背景がハスケルであり、物事をやるために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'を返す関数なのでしょうか?ある時点で値を持つ必要があります。万が一ハスケルから来ていますか? –
ハスケルの私の非常に限られた(そしてそれほど肯定的ではない)経験からの私の個人的意見は、F#に最初に入るためには、実際に多少異なるアプローチがあるため、ハスケルの考え方はあまり役に立ちません。ここで注意すべき最も重要なことは、Haskellとは異なり、F#は純粋な(ly)関数型言語ではないということです。 F#とそれに特有の "quirks"がより自然になると、Haskellの思考はおそらくもっと価値が増します。 – TeaDrivenDev