同 C# 一样,F# 发音为 F-Sharp。F# 虽然是微软推出的,但用微软的 bing 搜索关键词“F#”,至少前两页都与 F# 无关,看来 bing 还有很长的路。
F# 是由微软发展的为微软 .NET 语言提供运行环境的程序设计语言,是函数编程语言,它基于 OCaml(Objective Caml),甚至有时可把它看作“OCaml for .NET”。函数式编程是种编程典范,它将计算机运算视为函数的计算,函数编程语言最重要的基础是 λ 演算(lambda calculus),而且 λ 演算的函数可以接受函数当作输入(引数)和输出(传出值)。
F# 是不是设计来取代 C# 的呢?不是的,微软在 2002 年就开始研发 F# 了,其实每种语言都有一些优缺点,这种语言可能更适合这种场合,那种语言可能更适合另外一种场合。F# 作为函数编程语言:和指令式编程相比,函数式编程强调函数的计算比指令的执行重要;和过程化编程相比,函数式编程里,函数的计算可随时调用。
下面我们一起来看两个例子:
Sample1:打印"Hello,World!"
(* This is a comment *)
(* Sample hello world program *)
printf "Hello World!"
Sample2:打印数组中的全部数据
#light
open Microsoft.FSharp.Collection.List
(* print a list of numbers recursively *)
let rec printlist l =
(* When using "#light", you must indent with 4 spaces *)
if l = [] then
else
printf "%d " (nth l 0)
printlist (tl l)
Sample3:在桌面上添加一个按钮,和一个Label,点击按钮时,改变Label文本框的内容
#light
open System.Windows.Forms
type MyForm =
inherit Form
val l :Label
val b :Button
member t.InitializeComponent() =
t.Text<-"F Sharp Sample"
t.Controls.Add t.l
t.Controls.Add t.b
t.b.Click |> Event.add(fun evArgs ->
t.l.Text <- t.l.Text + "您好!")
new() as t =
{
b = new Button(Text="点 击",Location =
new System.Drawing.Point(100,128))
l = new Label(Text="显示信息:",Location =
new System.Drawing.Point (100, 100),
Size=new
System.Drawing.Size(200, 20))
}
then
t.InitializeComponent()
let form1 = new MyForm(Visible=true, TopMost=true)
do Application.Run(form1)
现在国内关于F#的可学习资料特别少,所以想学习的朋友,对于英文有点要求哦。
文章参考:http://www.cftea.com/c/2009/07/8FG02OL4FUNH3UZR.asp