代码改变世界

随笔分类 - 14-F#

F#中的事件(下)

2009-08-21 00:56 by Anders Cui, 2548 阅读, 收藏, 编辑
摘要:本文首先介绍了如何使用Event.create方法创建新的事件,然后在此基础上讨论了如何发布和订阅事件,这样可以更符合我们的编码习惯。不过这种方式发布的事件在C#等其它.NET语言中却难以使用,所以最后介绍了如何发布标准的.NET事件,这样就可以兼容于F#和其它的.NET语言了。 阅读全文

F#中的事件(上)

2009-08-19 01:01 by Anders Cui, 3638 阅读, 收藏, 编辑
摘要:在.NET开发中,事件以及基于事件的编程是颇为重要的概念,它得到了该平台下各种语言的支持。而F#将事件视为一等公民,这个特性使得我们可以通过更为有趣的方式对事件进行组合处理。 阅读全文

推荐F#最近的一些资源

2009-05-25 00:08 by Anders Cui, 3782 阅读, 收藏, 编辑
摘要:看着新版本的F#发布,忍不住看了几眼,收集了最近的一些关于F#的文章。其中的一篇Brian的文章中,包含了目前大多数F#专家的博客/站点,不容错过。 阅读全文

讨论:为什么函数式编程没有流行起来?(转载)

2009-03-03 21:22 by Anders Cui, 3148 阅读, 收藏, 编辑
摘要:函数式编程已经不是什么新概念了,但是对于很多编写应用程序的编程人员来说,函数式编程仍显得那么陌生和遥远。对此Confusion发起了一场关于“为什么函数式编程语言没有流行起来”的大讨论。 阅读全文

官方消息:Visual Studio 2010将正式包含F#(转载)

2008-12-25 22:19 by Anders Cui, 1156 阅读, 收藏, 编辑
摘要:在2007年,微软就透露F#将在未来的某个时刻成为.NET平台的头等语言。现在,它终于宣布F#将被包含在Visual Studio 2010中。 阅读全文

《F# for Scientists》可以下载到了,献给科学领域的程序员们

2008-12-19 22:40 by Anders Cui, 3976 阅读, 收藏, 编辑
摘要:好久了,能看到的F#书只有两本《Foundations of F#》和《Expert F#》。今天终于看到《F# for Scientists》的身影了!如果你是一位面向计算的研究人员、科学家抑或是其它的开发人员,同时你还需要学习FP、.NET和科学计算,那么《F# for Scientists》将是很好的选择。 阅读全文

F#探险之旅(八):使用F#开发Windows应用程序

2008-12-17 22:11 by Anders Cui, 4559 阅读, 收藏, 编辑
摘要:本文主要讨论了如何使用F#开发Windows应用程序。通过分析,确定了三种主要的方法,重点讨论了如何在F#中利用VS中的窗体设计器,这会使 WinForm程序的开发简单不少。其中的一个例子是processFinder,它可以获取当前机器上的进程和应用程序信息。 阅读全文

F#中有趣的计量单位

2008-11-29 20:23 by Anders Cui, 3226 阅读, 收藏, 编辑
摘要:NASA气象卫星意外坠落,原因竟是计量单位转换这样的“小问题”。为编程语言添加对计量单位的支持可以很大程度上避免这样的错误,编程任务也变得更有趣。F#提供了对计量单位的静态检查,并且封装了国际单位制的各个单位和物理常量,另外我们也可以定义自己的单位;在单位之间进行换算也很简单;此外F#还支持计量单位的泛型。作为对NASA气象卫星的纪念,本文最后给出了一个模拟太阳系的例子 :) 阅读全文

理解F#中的模式匹配与活动模式

2008-11-25 23:09 by Anders Cui, 2535 阅读, 收藏, 编辑
摘要:这里先是介绍了F#中模式匹配的用法,这个可以理解为使用F#内置的模式,这样我们就可以处理F#中的值和特定的数据结构,比如列表、Union类型和元组等;接下来更进一步,活动模式把模式匹配的语法用到了其他更多的数据结构,这样模式的应用范围得到了很大的扩展。而且通过活动模式,我们可以将问题域转换为一套术语来表达,从而脱离编程细节回归到问题域本身,这也就有了一些LOP(Language-Oriented Programming)的特点,事实上,活动模式正是F#中LOP的实现方式之一。 阅读全文

F#探险之旅(七):在F#中进行单元测试

2008-11-18 13:42 by Anders Cui, 2532 阅读, 收藏, 编辑
摘要:本文介绍了在F#中如何使用NUnit和FsUnit进行单元测试。可以看到两者都很简单,前者简单是因为能很好地延续在C#中的方式,迁移过来不要费多大力气;后者简单是因为它接近自然语言,看起来很亲切,比如我们可以写出fruits |> should contain "apple"这样的测试代码。FsUnit值得关注,除了单元测试本身,我们还可以通过它来了解Language-Oriented Programming的相关知识。 阅读全文

Eratosthenes筛法的F#实现

2008-11-11 12:14 by Anders Cui, 1261 阅读, 收藏, 编辑
摘要:考虑一个常见的数论问题,指定一个自然数,求出不大于该数的所有质数。Eratosthenes筛法就是解决这个问题一种简单、高效的方法。本文提供了这个筛子的C#和F#实现。 阅读全文

F#探险之旅(六):F#代码的组织

2008-11-05 21:57 by Anders Cui, 2543 阅读, 收藏, 编辑
摘要:在初学F#时,我们可以很随便地将代码放在同一模块内做些尝试或者测试。但我们程序员不该是随便的人,随着项目规模的增大,代码的组织问题会变得越发重要,我们应当越加重视。在VS中进行开发时,整个项目的组织自然地分为了Solution、Project、File三个层次,本文在这三个层次上就代码组织的基本问题做了讨论,写得比较简单,欢迎您来留言讨论 。 阅读全文

F#探险之旅(五):透过F#理解函数式编程(中)

2008-11-03 22:49 by Anders Cui, 2198 阅读, 收藏, 编辑
摘要:本文介绍了函数式编程(FP)中的列表操作。首先是FP中列表的三种基本操作,在此基础上我们可以推导出其它的各种操作;随后介绍了F#中List 模块中的重要函数;最后通过两个自定义函数来展示如何结合使用列表、递归和模式匹配。顺便提一句,强烈建议你学习一下Haskell来了解FP的基本思想,在F#中很容易就能使用命令式编程的方式编写程序,这种灵活性往往使人偏离FP,尤其是在初学的时候。这就像我们学习英语的过程,想象一下,如果把你空投到美国(或其它英语国家),你的英语的进步是不是会快得多? 阅读全文

F#探险之旅(五):透过F#理解函数式编程(上)

2008-10-26 21:20 by Anders Cui, 2372 阅读, 收藏, 编辑
摘要:本文尝试通过F#对FP的一些重要特征和属性做些介绍,包括函数(一等公民、高阶函数、柯里化、匿名函数、闭包)、避免副作用(对状态和数据的修改)、递归、惰性求值、模式匹配;然后讨论了FP对代码结构的影响。希望能增加您对FP的认识。 阅读全文

F#探险之旅(四):面向对象编程(下)

2008-10-12 16:43 by Anders Cui, 2280 阅读, 收藏, 编辑
摘要:至此,F#中的面向对象编程范式介绍完毕,我们手中的F#也变得更为锐利。本文首先介绍了类的继承、类的方法(虚方法、抽象方法等)、访问基类等跟继承相关的概念;接着是类的属性和索引器、类的静态方法这些类的特殊成员;最后讨论了如何定义委托、结构类型、枚举类型等特殊类型。相信有了这些知识,我们完全可以使用F#代替C#来编写类库了。学习这些知识的过程,也给了我们一个从新的角度了解.NET Framework的机会。在学习了F#的三种主要编程范式之后,下一步该考虑如何在实战中应用它,比如如何组织规模较大的程序,如何建立UI,如何与其它.NET语言进行交互等等,在后续的随笔中将逐步介绍这些内容。 阅读全文

浅析Mandelbrot集合及其图形的绘制

2008-10-10 00:31 by Anders Cui, 20640 阅读, 收藏, 编辑
摘要:<img src="http://pic002.cnblogs.com/img/anderslly/200810/2008101000352360.jpg" class="desc_img"/>1967年,美国数学家Mandelbrot曾出这样一个著名的问题:英格兰的海岸线到底有多长?这个问题在数学上可以理解为:用折线段拟合任意不规则的连续曲线是否一定有效?这个问题的提出实际上是对以欧氏几何为核心的传统几何的挑战,这个问题也是分形几何学的发端。而Mandelbrot集合则是分形几何的经典集合,它的图形表示可以让我们认识到纯粹的数学之美。由于分形几何学知识的匮乏,本文只能给出Mandelbrot集合的定义,并以最容易理解的方式绘制出该集合。这里使用的语言是F#,而不是C#,以后还会有更多采用F#的例子 :) 阅读全文

F#系列随笔索引

2008-10-08 00:18 by Anders Cui, 7670 阅读, 收藏, 编辑
摘要:在当前的背景下,如果一门语言的广告不能雷到人,还面对C#这样成熟的语言,就真的很难引起人们的兴趣。初学F#会让人一头雾水,我希望能有一个F#教程,它能在一些简单的例子中帮我们拨开乌云,《Foundations of F#》这本书不错,不过有些繁琐、冗长。我把书中的内容整理了一下,也把在《Expert F#》或者网上其它文章的一些内容加进来,另外我还喜欢把自己想到的F#与C#的异同点给写出来,这些就是我的《F#探险之旅》。 阅读全文

F#探险之旅(四):面向对象编程(中)

2008-10-07 22:58 by Anders Cui, 2700 阅读, 收藏, 编辑
摘要:本文首先介绍了强大的对象表达式机制,通过它,我们可以快速地创建抽象类或接口的轻量级实现;接下来是定义和实现接口;最后介绍了如何创建和实例化一个类,在创建类实例的时候,我们既可以采用显式的构造函数,也可以采用更为紧凑的“隐式的类构造”机制。 阅读全文

从这里开始学习F#

2008-10-03 22:14 by Anders Cui, 2898 阅读, 收藏, 编辑
摘要:<img src="http://strangelights.com/fsharp/images/FSharp.gif" class="desc_img"/> Robert Pickering是《Foundations of F#》一书的作者,他同时还创建了一个关于F#的Wiki,是学习F#绝好的地方。 该Wiki目前包含了如下内容:F#编程的笔记,F#的书籍和在线杂志,F#的应用和示例,F#类库,F#的代码片段,F#方面的文章以及F#的工具,这是继hubFS之后又一个F#知识的集中地,相信F#爱好者以后的学习会更为方便! 阅读全文

F#探险之旅(四):面向对象编程(上)

2008-09-30 12:07 by Anders Cui, 2421 阅读, 收藏, 编辑
摘要:本问首先对OOP做了简单介绍,大家可以看看最新的编程语言排行榜;然后逐一介绍了类型转换、类型测试、对派生类使用类型标注、使用记录类型模拟对象、向F#类型添加成员方法,通过这些语言结构我们能将值和函数封装在类型内部。在下一篇中将介绍接口和继承等相关语言结构。 阅读全文

F#探险之旅(三):命令式编程(下)

2008-09-28 01:40 by Anders Cui, 2871 阅读, 收藏, 编辑
摘要:走马观花,这一站的风景看得差不多了,命令式编程的核心部分也介绍完毕。有了函数式编程和命令式编程的知识,我们应该有信心解决大部分问题了。使用F#,我们可以选择合适的编程范式,而不是囿于特定的一种范式。我们将看到在C#所熟悉的控制流程,如何在F#中使用.NET类库中类型和它的属性、方法、索引器和事件等成员,还有如何对.NET类型进行模式匹配,最后是很实用的“|>”操作符。如果你刚开始不太接受函数式编程,就从这里开始吧。 阅读全文

F#探险之旅(三):命令式编程(上)

2008-09-25 01:56 by Anders Cui, 2864 阅读, 收藏, 编辑
摘要:F#探险之旅的第三站,一起来看看F#中命令式编程(Imperative Programming)范式相关的内容。我们绝大多数时候使用的语言都属于命令式编程语言,这与我们生活中的习惯相符合,因为我们都喜欢使用祈使语气——Imperative Mood :) 这一站的内容分为两部分,本文主要是有关unit类型,可修改的标识符,可修改的记录类型,ref类型和数组的内容。 阅读全文

F#探险之旅(二):函数式编程(下)

2008-09-06 11:29 by Anders Cui, 3420 阅读, 收藏, 编辑
摘要:本文继续讨论F#函数式编程范式的核心内容,主要是模式匹配、自定义类型、异常处理和延迟求值等内容,模式匹配可以很大程度上简化我们的程序;自定义类型则可以帮助我们更好地组织程序;延迟求值不仅能够提升性能,还可用于创建无限的数据结构,比如自然数序列。至此,F#的函数式编程的相关内容就介绍完了。另外,在开发F#程序时,建议常用Reflector来看看编译后代码的样子,来了解它优雅的函数式编程背后到底是什么。 阅读全文

F#探险之旅(二):函数式编程(中)

2008-08-31 17:44 by Anders Cui, 3116 阅读, 收藏, 编辑
摘要:接上一篇,本文继续介绍F#中的函数式编程范式,主要包含了操作符、列表、列表推导、类型推导、类型标注等概念。类型推导又称隐式类型,通常是——但不限于——函数式编程语言的特性,比如C# 3.0和VB.NET 9.0都提供了一定的支持,它使很多编程任务变得更为简单。 阅读全文

The F# September 2008 CTP is now available!(转)

2008-08-30 12:26 by Anders Cui, 767 阅读, 收藏, 编辑
摘要:F# September 2008 CTP发布了,这是F#进展过程的重要一步。 阅读全文

F#探险之旅(二):函数式编程(上)

2008-08-27 22:10 by Anders Cui, 4753 阅读, 收藏, 编辑
摘要:F#探险之旅的第二站,我们来看看F#中函数式编程相关的内容,这一部分内容很多,索性分为三部分。第一部分主要是关于函数式编程的最基础概念,包括标识符、值、函数、作用域、递归以及匿名函数等。 阅读全文

F#探险之旅(一):选择不同的开发方式

2008-08-21 22:19 by Anders Cui, 4901 阅读, 收藏, 编辑
摘要:知识是有时效的资产,需要定期对其进行投资,我们不妨把这个过程看作是一次新奇的旅途。本文主要是讨论开发F#程序的不同方式,可以选择轻量级的SharpDevelop、Editplus甚至Notepad,也可以选择重量级的Visual Studio。 阅读全文

F# 20分钟快速上手(二)

2008-08-10 17:05 by Anders Cui, 13880 阅读, 收藏, 编辑
摘要:在上篇文章里,我们写出了F#的第一个程序,本文我们来看一些F#语言的核心部分,包括值的不变性,模块,Tuple,柯里化,Union类型,模式匹配,Record类型,序列和集合等内容,读完此文后,希望能让您对F#有个整体的认识。 阅读全文

F# 20分钟快速上手(一)

2008-08-03 14:50 by Anders Cui, 22151 阅读, 收藏, 编辑
摘要:从Allen Lee的《从C# 3.0到F#》一文开始,感觉园子里F#正在升温。Chris Smith写了一个F#的小系列,这里翻译出来与大家分享。在本文从零开始编写我们的第一个F#程序。 阅读全文