我在F# Wikibook on High Order Functions 上关注了一些示例。
标题下的第二个代码片段,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# 交互式 shell (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
?