摘要: 今天这篇文章我们来谈谈F#的模式匹配,模式匹配在F#中充当着很重要的角色,msdn是这么描述它的:“模式”是用于转换输入数据的规则。模式将在整个 F# 语言中使用,采用多种方式将数据与一个或多个逻辑结构进行比较、将数据分解为各个构成部分,或从数据中提取信息。从某种情况来看,它与C#中的switch蛮类似的,不过在F#中,模式匹配的功能远远多于switch,好吧,接下来让我们一起享受这次的F#之旅吧~内容不在多,在于精辟易于理解~在介绍它之前,让我们先来看看如下代码:let a = 1 //nothing fancylet b = 1, 2 // b is tuple now这里定... 阅读全文
posted @ 2012-11-09 17:35 Jeallyn 阅读(2599) 评论(0) 推荐(1) 编辑
摘要: 继续上一篇叙述Tuple和Swap的文章,现在我们继续探索:相比C#编程,如何轻松的使用F#来减少你的编码工作。直到最近,我才开始注意到在F#中有一个叫做记录(Record)的类型,之前,我以为它类似于C#中的结构或者类,但是,实际并非如此。首先介绍下什么是记录:记录表示命名值的简单聚合,并可以选择包含成员。我们先来看如下代码:type myPointRecord = { X : float; Y::float }let pointA = { X = 0; Y= 0 }let pointB = { X = 0; Y = 0 } 上面定义的两个point实际上是相同的,我们可以用如下简单而且直. 阅读全文
posted @ 2012-11-08 17:22 Jeallyn 阅读(2881) 评论(0) 推荐(1) 编辑
摘要: 在F#中,有一个被称为元组(Tuple)的概念,“元组”是一些未命名但经过排序的值的分组,这些值可能具有不同的类型,这篇文章就来将它与C#之中的交换(Swap)做一次比较。F#,作为一门新兴的语言,相比C#来说,有它更为简单的实现方式,它能让代码变得更加的简洁,也能减少程序的bug,这就是我如此喜欢F#的原因。接下来我们举一些例子来描述F#比C#做的更好的地方,今天这一篇我们谈谈元组与交换之间的区别。Swap是我能想到的最简单的操作,现在,我想要一个通用的交换方法,它能处理任何类型,在C#中,你可以使用对象类型或者泛型来实现,但无论如何,你必须使用一个临时变量(虽然有些方法可以不通过临时变量来 阅读全文
posted @ 2012-11-07 16:28 Jeallyn 阅读(2299) 评论(5) 推荐(1) 编辑
摘要: 从上篇文章中,我们了解到为了防止overflow的异常,我们可以使用Continuation,上篇文章也告诉了我们如何将普通递归转换为Continuation,理所当然的,我们会考虑到一个问题:为什么不直接用Continuation呢,或者说,数据量小的时候,我们该作何选择?当看完上篇文章之后,我也想过用最为简单的Fibonacci作为例子,来一次普通递归到CSP的转换,以下我们先来看看普通递归的Fibonacci实现:View Code 1 module FibRecursive = 2 let rec fib n = 3 match n wit... 阅读全文
posted @ 2012-11-06 15:51 Jeallyn 阅读(2038) 评论(2) 推荐(0) 编辑
摘要: 当我接触的F#编程越多,我用到递归的可能性就越大,也正是因为这样,我时常会遇到堆栈溢出的问题,要想避免堆栈溢出问题,Continuation Style Program(CSP)是唯一的方法。以下我们列出普通的递归和CSP的版本代码进行对比,在这里,关键的一点,该方法不会返回,因此它不会在调用的堆栈上创建元素,同时,由于会延迟计算Continuation方法,它不需要被保存在栈元素中:View Code 1 module FunctionReturnModule = 2 let l = [1..1000000] 3 let rec sum l = 4 match... 阅读全文
posted @ 2012-11-05 15:57 Jeallyn 阅读(2082) 评论(7) 推荐(0) 编辑
摘要: 前面一篇文章我们介绍了Visual Studio 2012 Express for Web是什么,http://www.cnblogs.com/Jennifer/archive/2012/11/04/2753622.html,当然,如果你已经安装了Visual Studio 2012 Professional 或者其他版本,你并不需要再去安装这个版本,因为你已经安装了所有你需要的组件了,因此你也可以跳过本文,如果你需要安装这个版本,那么,这篇文章也许对你有一定的帮助。Quick Start: F# Tools for Visual Studio Express 2012 for Web的安装首 阅读全文
posted @ 2012-11-04 17:31 Jeallyn 阅读(1571) 评论(1) 推荐(0) 编辑
摘要: 这里所说的Visual Studio Express 2012 for Web是一个免费的开发环境,程序员可以使用它来构建ASP.NET应用程序和Windows Azure云服务项目,在这个版本里,增加了F#3.0的组件,提供了诸如F#3.0的编译器,F# Interactive,IDE的支持,同时,它也支持类型提供者和查询表达式等F#的新功能。当我们在Visual Studio 2012 Professional等版本中创建一个新F#项目时,我们会看见一个叫F# Tutorial的项目模板,一般情况下,我们并不会选择创建这样的一个项目,然而,在Visual Studio Express 20 阅读全文
posted @ 2012-11-04 16:37 Jeallyn 阅读(2146) 评论(0) 推荐(0) 编辑
摘要: View Code 1 let insertSort (num: int array)=2 for i=1 to num.Length-1 do3 let mutable temp=num.[i]4 for j=i-1 to 0 do5 if num.[j]>temp then6 num.[j+1]<-num.[j]7 num.[j+1]<-temp 阅读全文
posted @ 2012-10-17 17:39 Jeallyn 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。最容易思考的实现代码如下:View Code 1 let rooster()=2 for x=1 to 19 do3 for y=1 to 32 do4 let z= 100-x-y5 if ((z%3=0)&&(5*x+3*y+z/3=100)) then 6 printfn "... 阅读全文
posted @ 2012-10-16 14:49 Jeallyn 阅读(340) 评论(1) 推荐(0) 编辑
摘要: F#---F Sharp,函数编程语言,很有趣的一门语言,给人感觉有C#的熟悉,却也有着更多的陌生,以下便是用F#写出的冒泡排序,虽然是很简单的一个程序,却花了不少时间,当然,我承认自己比较笨,不管怎么样,记录于此,也算是个小小的里程碑了~View Code 1 let BubbleSort (num: int array)=2 for i=0 to num.Length-2 do3 for j=i+1 to num.Length-1 do4 if num.[i]>num.[j] then5 ... 阅读全文
posted @ 2012-09-24 17:53 Jeallyn 阅读(563) 评论(1) 推荐(1) 编辑