F# 学习笔记(0/n)
学习F#源于最近一股强劲的函数编程的浪潮,再加上各种脚本语言在CLR平台的互动。最近一期的MSDN上对F#进行了较为详细的介绍,微软已经将该语言提升到一个较为重要的位置了,并且据说比现在的脚本引擎(例如IronPython)在性能上有一定的优势。关于这一点还需要进一步测试。
直接下载msi文件安装,它会集成到VS开发工具中。或者你可以使用命令行工具fsi来进行交互是编程。
要注意的是,在交互式编程中需要使用“;;”作为语句的分割。
在命令提示符下输入 printf "Welcome to F# world!";;
屏幕输出如下:
WelCome to F# world!val it : unit = ()
在进行F#编程时,用的最多的就是let关键字,它用来定义数据,函数,计算的结果值以及过程。例如:
let wordCount text =
let words = String.split[' '] text
let wordSet = Set.of_list words
let nWords = words.Length
let nDups = words.Length - wordSet.Count
(nWords,nDups);;
以上代码定义了一个wordCount 函数 text 参数。 words和wordSet这两个函数只在内部有效,并且不会修改外部数据,这也是函数式编程的一大好处。let words = String.split[' '] text
let wordSet = Set.of_list words
let nWords = words.Length
let nDups = words.Length - wordSet.Count
(nWords,nDups);;
下面来看看一个比较有意思的字符元组(Tuple)操作.
定义了一个url的字符串数组,直接分配给httpUrl, statement, number三个变量,是不是很方便?如果是C#来写的话估计比这个行数要多吧!o(∩_∩)o...
如果是a*b的模式,可以使用fst直接解析出第一个元素,使用snd获得第二个元素
当然我们关系的可能还是如何和CLR进行交互,Let's rock!
如果要导入CLR类型或者自定义类型请使用 open 关键字,例如
open System.Windows.Forms;;
let frm = new Form(Visible=true,TopMost=true);;
怎么这么眼熟呢?这种语法在C#3.0中是不是也出现过呢?没错,C#3.0的确借鉴了不是函数编程的思想。
回车,此时出现了Form,然后继续修改Text属性 let frm.Text -> "Welcome";;
脚本语言的特性出现了,呵呵,刚才的窗口标题是不是改变了?是不是很有意思?
兴趣是最好的老师,后面再深入讲解F#的一些核心:函数式编程。
要开会了,先到这里吧!