第二章 获得、安装、使用 F#

86 篇文章 0 订阅

第二章获得、安装、使用F#

 

这一章介绍如何获得F#,如何在Windows 和Linux 下安装,如何以不同的方法编译,我们也将讨论本书用于测试的例子的软件版本。

 

获得F#

 

F# 现在默认包含在 Visual Studio2010 中,因此,如果你已经安装了这个版本,可能就已经安装了 F#;如果你安装的是Visual Studio 2010,但是,却看不到 F#,那么,就要确认一下,是否已经安装了这个包。可以通过控制面板中的程序或添加、删除程序完成(如图 2-1)。

图 2-1 启用 Visual Studio 2010 中的 F#

 

如果你还不是 Visual Studio 的用户,或者更喜欢使用 Visual Studio 2008,而不是使用 Visual Studio 2010,那么,就必须单独下载 F# 安装包。查找 F# 相关信息的最好地方,是在MSDN 的F# 资源中心,即http://msdn.microsoft.com/fsharp/。在 F# 资源中心页面的左上角有编译器程度的链接,有两个版本,一个是 MSI 版本,如果你已经安装了 Visual Studio,这个版本会自动安装Visual Studio 集成;还有一个 ZIP 版本,它主要针对非 Windows 用户。安装包有这样一些内容:编译器 fsc.exe,fsi.exe(F# 交互控制台),基于F# 解析工具,F# 基本类库,F# 文档和一些 F# 示例。

[实际上,这个页面上已经找不到有关下载的链接了。因为页面也已经看不到 Visual Studio 2008 的内容了。

在页面有一个链接,叫获取适用于 Visual Studio Express 2012 for Web 的 Visual F# 工具。而这个页面打开的基本上都是 Visual Studio Express 2013 的内容。

而Visual Studio Express 2013 已经自带 F# 了。

]

 

在Windows 有Visual Studio 2008 上安装 F#

 

这一节主要针对使用老版本Visual Studio 的用户。(前面说过,Visual Studio 2010 的用户已经安装了 F#。)在Windows 有Visual Studio 2008 上安装 F#,也非常简单,需要有系统管理员权限的帐号运行,下载前一节中描述的 MSI版本,然后执行即可。

请注意,在写作本书时,免费的 Visual Studio Express 版本还不支持插件,因此,不能用这个的 F# 集成。有关Visual Studio 2008 的更多内容参见 MSDN 的扩展 VisualStudio,http://msdn.microsoft.com/vsx2008

[不过,而在已经看不到 VisualStudio 2008 的内容了,好像只有 Visual Studio 2010]

 

在Linux 上安装F#

 

如果你不熟悉 Linux,但是愿意尝试一下 Mono,最简单的办法是在 Mono 网站上下载 SUSE Linux 虚拟机的映像文件,地址为http://www.go-mono.com/mono-downloads/

 

Mono 是通用语言运行时(CommonLanguage Runtime,CLR)的一个免费、开源、多平台实现,它符合通用语言基础(Common Language Infrastructure,CLI)的 ECMA 规范,和 Microsoft.NET 兼容,由 Novell 和大量的社区自愿者共同完成。

 

[

Mono

Richard Stallman,GNU工程创始人和GPL作者,指责在Debian里安装“Mono”对于开源来说是一个“危险”的举动。什么是MONO? MONO项目是由Ximian发起的,由Miguel de lcaza领导的,一个致力于开创.NET在Linux上使用的开源工程。它包含了一个C#语言的编译器,一个CLR的运行时,和一组类库,并实现了ADO.NET和ASP.NET。能够使得开发人员在Linux用C#开发程序。

Richard Stallman在一份声明中称,“微软很有可能计划有一天突然行使其专利权,而所有的开源C#程序都将受到影响。这是一个危险的举动(指的是Mono进入Debian安装包),只有傻瓜才会忽略这个问题。”

]

 

这个虚拟机映像文件已经预安装了最新的 Mono 运行时和开发工具,因此,不需要考虑任何的设置问题。但是,目前还不包含 F# 编译器,需要通过下面的命令进行手工安装。我执行这些步骤使用的是 root 帐号。

1、仍然在 /usr/lib/fsharp 目录中,运行命令 shinstall-mono.sh。[似乎应该是新建目录]

2、解包 F# 发布包,复制文件到 /usr/lib/fsharp;

3、在 /usr/lib/fsharp  目录中,运行chmod +x install-mono.sh;

4、运行文本文件 install-mono.sh中的 dos2unix 工具;

5、仍然在 /usr/lib/fsharp 目录中,运行命令 shinstall-mono.sh。

执行这些步骤后,就可以在命令行上用任何帐号使用F#,运行mono /usr/lib/fsharp/bin/fsc.exe,后面加命令行选项。很明显,每次都这样运行就太麻烦了,因此,我在 /usr/bin 中创建一个脚本文件叫fsc。

 

#!/bin/sh

exec /usr/bin/mono $MONO_OPTIONS/usr/lib/fsharp/bin/fsc.exe "$@"

 

然后运行chmod +x fsc,给用户执行权限。以后,运行F# 编译器,只需要在命令行上简单地输入fsc 可以了。同理,F# 交互编译器,fsi.exe,也可以用下面的脚本文件:

 

#!/bin/sh

exec /usr/bin/mono $MONO_OPTIONS/usr/lib/fsharp/bin/fsi.exe --no-gui "$@"

 

图 2-2 显示的是运行在 Linux Mono 下的交互式 F#。

图 2-2 运行在 Linux Mono 下的交互式 F#

 

以不同的方法使用F#

 

F# 程序就是文本文件,因此,可以使用任何文本编辑器创建,只要保存的程序以 .fs 做扩展名,用fsc.exe 进行编译。例如,在文本文件 helloworld.fs 中有下面的程序:

 

printfn "Hello World"

 

只需要运行fsc.exe helloworld.fs,把程序编译成 helloworld.exe,程序就能在控制台输出下列文本:

 

Hello World

 

Visual Studio

 

开发F# 程序,我认为最容易、最快捷的方法是使用Visual Studio 中的F# 交互编译器(如图2-3)。可以在文本编辑器中输入F# 程序,利用语法高亮和智能提示完成代码,然后,编译成可执行文件,设置断点,按F5 启动交互调试。还可以用交互方式执行一段代码。选择想执行的代码,按Alt+Enter,F# 会执行这一段代码,并显示结果。这极大地方便了测试代码片断。

 

图2-3 在Visual Studio中交互执行F#

 

SharpDevelop

 

SharpDevelop 是一个有 F# 绑定的、开源的集成开发环境,能够用于 .NET 和 Mono 的开发。F# 绑定是由SharpDevelop 打包的,因此,所有要做的就是保证已经安装了 F#,然后,再安装SharpDevelop。之后,唯一要做的事情就是创建一个新的 F# 项目。有 F# 的SharpDevelop并没有提供像 Visual Studio 那么多的功能,只有语法高亮和 F# 交互。然而,其开发环境仍然非常有用,且是开源的,因此,如果你打算对它进行扩展,也可参加到这个项目中来。图2-4显示了用SharpDevelop 打开的一个 F# 项目。

图 2-4 SharpDevelop 打开的 F# 项目

 

 

F# 交互命令行

 

 

如果你愿意,也可以直接在F# 交互控制台中输入程序,在单机模式下运行,如图2-5。

图 2-5 运行在单机模式下的F# 交互控制台

 

使用交互式控制台输入代码,完成一段后,以两个分号(;;)结束,表示编译器可以编译并运行了。

F# 交互以两种方式响应命令。如果把值绑定到标识赋,将输出标识符的名字和类型。因此,在F# 交互中输入下列内容:

 

> let i = 1 + 2;;

 

结果如下:

 

val i : int

 

然而,如果在F# 交互中只输入值,响应会有一些不同。在F# 交互中输入下列内容:

 

> 1 + 2;;

 

结果如下:

 

val it : int = 3

 

这表示3被绑定到专门的标识符it,它对这次F# 交互会话的其他代码也是可用的。前面的表达式计算后,它的值也会输出到等于号的后边,(就如前面例子中的3)。随着你对fsi.exe 和F# 整体上的了解加深,就会发现在调试程序、研究其工作机制方面,F# 交互会非常有用。(我们会在第三章详细讨论值、标识符和类型。)

通过按Tab 键可以实现代码的自动完成。我发现这种工作模式,对于测试很短的程序,[不需要]通过复制、粘贴到控制台,或者为了检查已有库函数的属性方面会很有用。例如,在图2-5 中[不是图 2-2],我们查看了System.Environment.Version 属性。然而,我发现这种模式在写大程序时是不方便的,因为,程序一旦编码以后,存储很困难,必须使用复制、粘贴到控制台。使用Visual Studio,即使不打算交互运行,你仍可以很容易用Alt+Enter 执行代码片断。

 

 

本书的示例

 

本书中的代码主要是使用 fsc.exe 而不是 fsi.exe。虽然 fsi.exe 在测试代码、运行简单脚本和运行体验等方面很方便,但是,我相信,fsc.exe 对于写完整的软件会更有用。由于它们在语法和命令方面差异并不大,因此,大多数很少或几乎不要修改就能用 fsi.exe 运行,如果需要修改,我会有提示。

示例代码可以从http://bfs.codeplex.com/下载,本书中的所有示例都在运行 windows 7 且使用 .NET 4.0 的系统上测试通过,部分程序也通过了运行 Linux 使用 Mono 2.4.2.3 系统的测试。

 

 

本章小结

 

这一章介绍了如何安装和运行 F#,以及不同的使用方法,后续章节将介绍如何用 F# 来编程,第三章首先介绍用 F# 进行函数式编程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值