F# Wikibook on High Order Functionsのいくつかの例に従っていました。
タイトルの下の 2 番目のコード スニペット、Composition Functionには次のコード スニペットがあります。
#light
open System
let compose f g x = f (g x)
let xSquared x = x*x
let negXPlusFive x = -x/2.0 + 5.0
let fog = compose xSquared negXPlusFive
// ... Console.WriteLine statements....
私が理解に問題を抱えているのは
let xSquared x = x*x
F# インタラクティブ シェル (fsi.exe) で単独で実行すると、次のシグネチャが得られます。
> let xSquared x = x*x;;
val xSquared : int -> int
しかし、コード スニペット全体を実行するとxSquared
、以下が返されます。
val compose : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b
val xSquared : float -> float
val negXPlusFive : float -> float
val fog : (float -> float)
なぜxSquared
テイクfloat
とリターンはfloat
?