F#初学笔记01
2012-06-13 13:29:10 来源:WEB开发网核心提示: F#支持函数的部分应用(也称作curried functions,柯里函数)Currying是为了纪念美帝数学家Haskell Brooks Curry而命名的,F#初学笔记01(2),在计算机科学中,柯里化(Currying),最后一个缩进表示作用域的终结,缩进意味着let绑定的值是一个中间值,又称部分求值(Pa
F#支持函数的部分应用(也称作curried functions,柯里函数)Currying是为了纪念美帝数学家Haskell Brooks Curry而命名的。
在计算机科学中,柯里化(Currying),又称部分求值(Partial Evaluation),是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
柯里函数详见:
http://en.wikipedia.org/wiki/Currying
http://learnyouahaskell.com/higher-order-functions#curried-functions
柯里函数意味着不需要吧所有的参数传给函数。如上述第三行代码。
#light
大部分的F#文件以”#light”开头(译者注:在当前的Dev10版本中已经把”#light”设置为默认打开,所以当前的F#文件不需要再显示的调用”#light”)
#light
这个是用来打开”轻量级语法(lightweight syntax)”选项的.我在这里不会讨论和” 轻量级语法”对应的选项是什么,因为人们总是使用”轻量级语法”这个选项.而且在下一个F#版本中”” 轻量级语法”将成为默认选项(译者注:当前的F#版本已经这样做了). 现在还是要确保”#light”总是出现在F#代码文件的开头.
标识符的作用域
F#中,不需要显式的返回值,值自动的与标识符绑定。如何在F#中使用中间值呢?F#中,由空格控制。每个缩进都表示一个新的作用域。最后一个缩进表示作用域的终结。缩进意味着let绑定的值是一个中间值,在外部的作用域是看不到的。下面的例子演示了作用域
// function to calculate a midpoint
let halfWay a b =
let dif = b - alet mid = dif / 2mid + a
// call the function and print the results
printfn "(halfWay 5 11) = %i" (halfWay 5 11)
printfn "(halfWay 11 5) = %i" (halfWay 11 5)
#light
let printMessage() =
let message = "Help me"
printfn "%s" message
printfn "%s" message
let changeType () =
let x = 1 // bind x to an integer
let x = "change me" // rebind x to a string
printfn "%s" x
changeType ()
更多精彩
赞助商链接