且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

关于VS2010中F#的使用说明及勘误

更新时间:2022-05-31 19:48:00

目前,看到许多介绍F#的介绍,基本上就是互相“借鉴”来的,不过其中很多是基于Framework 3.0或3.5的,在Framework 4.0中F#有一些改变

下面就我的学习中,有以下几点说明

1.在VS2010中,Ctrl+Alt+F打开fsi(F# Interactive)

2.选中要执行的代码后,按下Alt+Enter在fsi中运行

3.Framework 4.0中没有print_any,print_newline,print_string等函数,应用printfn "%A",printf "\n",printfn "%s"等替换

4.定义Seq时应用let squares=seq { for x in 1..10 -> x * x},而不能用let squares={ for x in 1..10 -> x * x}

5.在F#入门一书中的

let evens n=seq { for x in 1..n when x % 2=0-> x}

在4.0无法编译通过,可改为:

let evens1 n=seq { for x in 1..n do if (x % 2 =0) then yield x}

6.#light 表示轻量语法(等同于#light "on")

可用于 F# 语言中的多种构造的语法有两种形式:“详细语法”和“轻量语法”。详细语法并不常用,但它的优势是对缩进的敏感程度较低。轻量语法比较简短,并使用缩进来表示构造的开头和结尾,而不是使用诸如 beginendin 等附加关键字。 默认语法为轻量语法。本主题介绍在未启用轻量语法时 F# 构造的语法。详细语法始终处于启用状态,因此,即使您启用轻量语法,也仍然可以为某些构造使用详细语法。可通过使用 #light "off" 指令禁用轻量语法。

7.Array2应改为Array2D,Array3应改为Array3D

8.列表只有IsEmpty属性,判断是否为空,没有noeempty,如果要判断列表非空,可用Length属性

如将while (List.nonempty !mat) do改为 while ((List.length !mat)>0) do