摘要: 元组是F#中特有的一种数据类型,一种非常方便的数据类型,类型为System.Tuple<_>。它是一些值的组合,通过逗号来分隔每个元素,元素可以是任何的数据类型。元组和链表的区别:链表:元素的个数是可变的,但元素必须是相同的数据类型。元组:元素的个数是固定的,元素的类型可以是不同的数据类型。使用元组的一个好处就是,如果用元组来作为函数的返回值进行返回,就可以很方便地从一个函数中返回多个值。元组的表示方法: (元素1,元素2,…,元素n)下面是一些示例:> let dinner = ("green eggs", "ham");; //两个 阅读全文
posted @ 2012-03-07 15:35 tryfsharp 阅读(641) 评论(2) 推荐(0) 编辑
摘要: 在这篇文章中,我们将简单地看看F# PowerPack中可用的两种数字类型。Complex类型代表由实数部分和虚数部分组成的复数。两部分数字都是以浮点型数据存储的。类型BigRational表示由任意大小的分子与分母组成的有理数。任意大小的整数则是由从.NET4.0就可用的BigInterger 类来表示的(位于System.Numerics.dll程序集中)。在.NET2.0中,BigIntger类型也是F# PowerPack中的一部分。本文是介绍F#与F# PowerPack中数字计算功能系列文章中的一篇。此系列中的其他文章讨论了矩阵,自定义数字类型和编写范型代码。其它部分的链接请看F# 阅读全文
posted @ 2012-02-27 14:44 tryfsharp 阅读(1754) 评论(0) 推荐(0) 编辑
摘要: 链表和数组都是数据的集合。F#的链表是线性列表的一种,单方向链表,它是基本数据结构之一,一种携带指向下一个元素的指针的数据结构。链表中的元素必须是同类型的数据类型。而数组与链表很相似,但它可以使用数组索引来访问到数组中的某个元素。同时,它的元素也必须全部是同类型的数据类型。链表的写法是用[]来表示,同时元素用";"来分隔。当然不用";"分隔情况也是有的。请看下面的一些例子:> [];; // 空链表val it :'a list = []> [1;2;3];; // 普通链表,用";"来分隔元素val it :in 阅读全文
posted @ 2012-02-27 10:46 tryfsharp 阅读(1409) 评论(3) 推荐(1) 编辑
摘要: F#中的变量的值在声明初始化后就不可以被修改了。但如果想使用可变的变量时,用mutable关键字修饰变量就可以被修改了。使用mutable关键字声明变量后,使用<-可以修改变量的值。下面我们来看一些例子。// 定义一个可变整形变量,初始值为1,改变值后为10> letmutable num = 1;;valmutable num : int = 1>num;;val it :int = 1> num<- 10;;val it :unit = ()>num;;val it :int = 10// 这里是一个Record(记录),里面的Miles字段为可变值&g 阅读全文
posted @ 2012-02-23 14:31 tryfsharp 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 服务总线提供了安全消息传递和中继功能,使您能够在云中构建松散耦合的分布式应用程序以及跨私有云和公有云的混合应用程序。 它不仅支持多种消息传递协议和模式,而且将处理针对应用程序的交付保证、可靠消息传递和缩放。 服务总线是一项由 Microsoft 运营的托管服务,其 SLA 为每月 99.9%。服务总线有多种实际用途。一些常见用途包括:混合应用程序利用服务总线,您可以安全连接私有云中运行的企业系统并将这些系统与 Windows Azure 上运行的应用程序集成。这样一来,便能更轻松地将解决方案扩展到云,而无需将所有数据或代码从现有企业数据中心移动或迁移到 Windows Azure。移动应用程序 阅读全文
posted @ 2012-02-21 10:55 tryfsharp 阅读(1181) 评论(0) 推荐(1) 编辑
摘要: 这篇文章是此系列中的第一篇,在这个系列中,我将介绍F#中的一些特性,如对数字运算有帮助的特性以及一些来自F# PowerPack库的一些功能。大部分内容最初都是为位于MSDN上名为“F#中的数字运算”的章节(我之前发布的)所写的,但是后来,我们决定把重点放到使用第三方语言库的F#编程上,这些库提供了更多有效的实现以及更丰富的标准数字运算函数集合,通常在实现机器智能学习和概率算法或者进行统计分析时,这些函数集合会被应用到。如果你对这个话题感兴趣,那么本文的最后部分给出了MSDN中一篇重要文章的链接。尽管如此 ,F# PowerPack仍然包含了一些有用的功能.它包含两种附加的数字类型以及一个与F 阅读全文
posted @ 2012-02-16 14:53 tryfsharp 阅读(699) 评论(0) 推荐(1) 编辑
摘要: 如果你熟悉F#中的list,你可能知道List模块中包含了很多方便快捷的用来处理多种集合类型数据的函数,其实Sequence与List相似,也是拥有着大量此类函数,这些函数可以用来处理任何实现了IEnumerable接口的集合类型。Sequence与List 最大的区别在于Sequence 在任意时刻,内存中仅会存储此Sequence的一个元素,就如同C中的枚举。而List 则需要全部存储,因此,我们使用Sequence可以轻松的创建一个无穷序列,且不会有内存耗尽的危险,而List 则不同了。下面我们来看看Sequence的各种强大的功能。map 和 iter: 这两个函数均需要一个给定函数作 阅读全文
posted @ 2012-02-15 15:37 tryfsharp 阅读(1795) 评论(0) 推荐(1) 编辑
摘要: 总得来说,数据值存储在栈上面的称为值类型,而数据值存储在堆上面的称为引用类型。对于F#而言,每个声明的值都会在创建时被初始化,因为在函数式的编程中,值被声明后就是不可变的。下面看看怎么获取某个值的情况:Unchecked.defaultof<'a>获取'a的默认值typeof<'a>返回描述'a的System.Type对象sizeof<'a>返回'a在栈上的空间大小在F#中,默认所有值是不能更改的,那么怎么样来改变一个值呢,一个方法是用Ref引用单元(主要用于引用类型的更改),还有用mutable关键字(主要用 阅读全文
posted @ 2012-02-15 15:32 tryfsharp 阅读(239) 评论(0) 推荐(1) 编辑
摘要: 在F#中, 我们使用关键字fun 来定义函数。函数的参数是以空格来区分的,且函数体与函数的参数被一个左箭头(->)隔开的。下面是一个函数示例,此函数将传入的两个值相加:fun x y -> x + y注意,在上面这个函数中,我们并没有看到具体的函数名,像这样定义的函数,我们称之为匿名函数,或者函数表达式,或者表达式。乍一看,或许你会觉得没有名字的函数会很奇怪。然而,如果一个函数需要另一个函数作为参数传入时,那么,此作为参数的函数就并不需要一个具体的名字了,尤其是当此函数非常简单时。下面我们可以看看如何使用匿名函数作为参数传入其他函数的:let iList = [ 1; 2; 3; 阅读全文
posted @ 2012-02-07 16:29 tryfsharp 阅读(346) 评论(1) 推荐(0) 编辑
摘要: 首先我们来看看F#中基本的for循环编写方法。for循环for语句1 := for循环变量 =表达式1 to表达式2 do表达式3 donefor语句2 := for循环变量 in表达式4 do表达式5donefor语句1有点c语言的风格。for语句2就是一般所说的foreach循环,类似于C#,不过功能更强大。下面我们来看看第一种for循环:> // For loopfor i = 1 to 5 doprintfn "%d" i;;12345val it :unit = ()这里在表达式中将循环变量进行初始化,从1循环到5,然后输出每个整数。用downto关键字来表 阅读全文
posted @ 2012-02-07 14:41 tryfsharp 阅读(441) 评论(0) 推荐(0) 编辑