代码改变世界

随笔分类 -  14-F#

F#中的事件(下)

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

F#中的事件(上)

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

推荐F#最近的一些资源

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

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

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

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

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

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

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

F#中有趣的计量单位

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

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

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

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

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

Eratosthenes筛法的F#实现

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

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

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

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

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

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

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

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

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

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

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

F#系列随笔索引

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

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

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

从这里开始学习F#

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