<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="rss.xsl" media="screen"?>
<rss version="2.0">
  <channel>
    <title>拼吾爱程序人生 - F#</title>
    <link>http://www.pin5i.com/showforum-213.html</link>
    <description>Latest 20 threads</description>
    <copyright>Copyright (c) 拼吾爱程序人生</copyright>
    <generator>Discuz!NT</generator>
    <pubDate>Thu, 04 Dec 2008 08:14:47 GMT</pubDate>
    <ttl>180</ttl>
    <item>
      <title>F#中有趣的计量单位</title>
      <description><![CDATA[“失足”的NASA气象卫星 

1998年2月，美国宇航局（NASA）发射了一枚探测火星气象的卫星，预定于1999年9月23日抵达火星。然而研究人员惊讶地发现，卫星没有进入预定的轨道，却陷入了火星大气层，很快就烟消云散了。NASA的官员经过紧急调查，发现问题居然出在有些资料的计量单位没有把英制（English）转换成公制（Metric），错误起自承包工程的洛克希德马丁航天公司。美国企业包括太空]]></description>
      <link>http://www.pin5i.com/showtopic-21286.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Sun, 30 Nov 2008 21:49:00 GMT</pubDate>
    </item>
    <item>
      <title>理解F#中的模式匹配与活动模式</title>
      <description><![CDATA[模式匹配（Pattern Matching）

允许我们根据标识符值的不同进行不同的运算，它通常被拿来跟C#中的if…else或switch语法结构相比较，结论往往是模式匹配比后者要更为灵活、强大。那先来分析一下它灵活、强大在哪儿。

为什么说模式匹配是灵活、强大的？

在我前面写过的几篇随笔里面，有几次提到了模式匹配，比如它能够对简单值（整数、字符串）匹配，也可以对.NET类型进行匹]]></description>
      <link>http://www.pin5i.com/showtopic-21219.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Wed, 26 Nov 2008 22:22:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（七）：在F#中进行单元测试</title>
      <description><![CDATA[单元测试是开发者编写的一小段代码，用于检验被测代码的一个很小的、很明确的功能是否正确。通常情况下，一个单元测试（用例）用于判断某个特定条件（或场景）下特定函数的行为。如果想对单元测试的好处有更多的了解，可以看一下单元测试实战。

在.NET社区内，NUnit无疑是最经典的单元测试工具，要了解它的用法，建议看一下园子里的一篇很棒的文章NUnit详细使用方法。本文对此不再赘述。另外MbUnit作为]]></description>
      <link>http://www.pin5i.com/showtopic-21046.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Tue, 18 Nov 2008 22:26:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（六）：F#代码的组织</title>
      <description><![CDATA[前言

是的，我们已经学习了如何在F#中使用各种范式（函数式、命令式、面向对象）进行编程。但是目前还仅限于在单个模块内编写，要知道，不管是采用哪种语言或者范式编程，如果项目规模大了，都不适合把所有代码放在单个模块内。

在常规的.NET项目中（比如C#+ASP.NET），我们往往会选择使用Solution的概念作为整个（独立）问题域的解决方案，Solution以下则是Project、Fil]]></description>
      <link>http://www.pin5i.com/showtopic-20825.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Wed, 05 Nov 2008 22:25:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（五）：透过F#理解函数式编程（中）</title>
      <description><![CDATA[列表（List）是函数式编程（FP）的基础。事实上，FP的重要代表Lisp的名字即源自“List Processing”，它的发明者John McCarthy于1960年发表的论文向我们展示了，在只给定几个简单的操作符和一个表示函数的记号的基础上，如何构造出一个完整的编程语言，他的主要思想之一是用一种简单的数据结构列表来表示代码和数据。

链表（Linked list）是Lisp的主要数据结构]]></description>
      <link>http://www.pin5i.com/showtopic-20788.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Mon, 03 Nov 2008 22:55:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅系列文章</title>
      <description><![CDATA[为何要学习F#？这是个首当其冲的问题，跟当初“Java还是C#”这样的问题不同，现在是在学习一门新语言。《程序员修炼之道》的一句话“每年至少学习一种新语言”让我蠢蠢欲动，除了F#，去年还看过一些Python，甚至写过一些小程序。但最终选择了F#，也许有一篇文章起到了很大的作用，如果你没有用过函数式编程语言，可以看看这篇文章；还有可能是因为这一篇《谁在用F#》（后来知道这其实是《Foundation]]></description>
      <link>http://www.pin5i.com/showtopic-20608.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Sun, 26 Oct 2008 23:56:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（五）：透过F#理解函数式编程（上）</title>
      <description><![CDATA[关于函数式编程（Functional programming，FP）

函数式编程（FP）是一种编程范式，它计算机的计算过程视为函数运算，避免状态和数据的修改。与命令式编程相比，它更强调函数的运用。λ运算构建了函数式编程的基础。重要的函数式编程语言包括Lisp、Scheme、Erlang、Haskell、ML、OCaml等，微软则在2005年引入了F#。

此外，包括C/C++/C#/Py]]></description>
      <link>http://www.pin5i.com/showtopic-20607.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Sun, 26 Oct 2008 23:48:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（四）：面向对象编程（下）</title>
      <description><![CDATA[类的继承 

在前面（面向对象（中））介绍过的对象表达式中，已经涉及到了类的继承，我们可以覆盖类的成员实现，然后创建新类的实例。这一节里，我们来看看常规的继承机制，熟悉C#的开发人员会感到更亲切。
F# Code - 类的继承
#light
type Base = class
val state : int
new() = { state = 0}
end

type Sub ]]></description>
      <link>http://www.pin5i.com/showtopic-20378.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Sun, 12 Oct 2008 19:53:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（四）：面向对象编程（中）</title>
      <description><![CDATA[对象表达式（Object Expressions）

F#中的OOP语法很简洁，而对象表达式则正是这种简洁性的核心所在。通过对象表达式，我们可以创建抽象类或接口的轻量级实现，也可以对一个具体的类进行继承。换言之，可以在实现抽象类或接口，或者继承具体类的同时创建新类型的一个实例。下面来看如何对泛型接口IComparer&amp;lt;’T&amp;gt;应用对象表达式。
F# Code
#light
op]]></description>
      <link>http://www.pin5i.com/showtopic-20318.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Wed, 08 Oct 2008 00:01:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 的 Wiki</title>
      <description><![CDATA[Robert Pickering 是《Foundations of F#》一书的作者，他最近创建了这个关于F#的Wiki，这里是开始学习F#绝好的地方。

先来看看 Robert Pickering 对 F# 和 C# 的比较：
F# is quite differnt to C#, the things I like to say are:
F# syntax is generally ]]></description>
      <link>http://www.pin5i.com/showtopic-20288.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Sat, 04 Oct 2008 07:23:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（四）：面向对象编程（上）</title>
      <description><![CDATA[面向对象编程概述（OOP） 

面向对象编程是当今最流行的编程方式，看看TIOBE 2008年9月的编程语言排行榜就很清楚了：

8523

在这些主流语言中，除了C，都或多或少地提供对OOP的支持，而Java和C#更是纯粹的面向对象编程语言，C还有一个子集——Objective-C。值得一提的是Delphi的强势回归。下图则是各个编程范式的占有率：
8524

OOP编程范式是]]></description>
      <link>http://www.pin5i.com/showtopic-20264.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Tue, 30 Sep 2008 12:36:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（三）：命令式编程（下）</title>
      <description><![CDATA[控制流程（Control Flow） 

在 函数式编程（中） 一文中，我们初步了解了F#在函数式编程范式下的控制流程，即if, elif, then, else等组成的结构。在命令式编程范式下，F#提供了更多的控制流程支持，包括if，while和for。

在命令式编程范式下的if结构与函数式编程下对应结构的主要差别在于，对于if分支，调用的函数为unit类型（即无返回值），而且并不要求]]></description>
      <link>http://www.pin5i.com/showtopic-20249.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Sun, 28 Sep 2008 18:12:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（三）：命令式编程（上）</title>
      <description><![CDATA[在本系列的第二部分（函数式编程上、中、下）中，我们了解了如何使用F#进行纯粹的函数式编程。但是在一些情况下，比如I/O，几乎不能避免改变状态，也就是说会带来side effect。F#并不强求你以无状态的方式编写程序，它提供了可修改（mutable）的标识符来解决这类问题，同时它还提供了其它的程序结构以支持命令式编程。现在就来对这些特性探个究竟。

首先是unit类型，这种类型表示“没有值”。]]></description>
      <link>http://www.pin5i.com/showtopic-20248.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Sun, 28 Sep 2008 17:55:00 GMT</pubDate>
    </item>
    <item>
      <title>F#语言2008年9月CTP版已经更新</title>
      <description><![CDATA[在这F# 2008年9月CTP版短暂的发布后，它又进行了更新。这是一个小版本的更新，它发布的目的就是要解决在1个星期之前发布的CTP中遇到的一些问题。“在decimal类型上的测量单位的支持在第一个CTP版本上有一定限制，不过现在它已经被修正了”，据F#团队的研究员Don Syme所述。 

Don列出了在这个更新中被修正的如下问题： 
 
浮点类型的类型缩写所引起的不能正确的情况；
]]></description>
      <link>http://www.pin5i.com/showtopic-20187.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Thu, 18 Sep 2008 12:45:00 GMT</pubDate>
    </item>
    <item>
      <title>F#学习之路(7)集合类型</title>
      <description><![CDATA[上一篇博客，介绍了列表类型，本篇将介绍数组类型Array、字典类型(Map)，以及可变数组(ResizeArray)、Set类型。

     一、数组类型 (Array)

     数组类型，在语义上表示一组相同类型的集合。这个跟列表(List)相似，两者的区别在于列表类型数据元素不可变，而数组类型可以。虽然数组类型随机访问，在查询访问上性能优先列表，但列表在变更集合(增加、删除集合元]]></description>
      <link>http://www.pin5i.com/showtopic-20159.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Mon, 15 Sep 2008 07:03:00 GMT</pubDate>
    </item>
    <item>
      <title>F#版本更新说明</title>
      <description><![CDATA[F#CTP 1.9.6.0更正列表:  
     1、名称空间必须使用完全限定名打开，名称空间不可以取别名。

     2、在fs,fsi文件中，除注释外，第一行必须使用#light或#light &amp;quot;off&amp;quot;

     3、元组类型互操作上发生了变动。 

     新增了两个类型来提供互操作上的支持。TupleEnd,TupleNested，彻底解决了互操]]></description>
      <link>http://www.pin5i.com/showtopic-20104.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Sun, 07 Sep 2008 21:16:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（二）：函数式编程（下）</title>
      <description><![CDATA[模式匹配（Pattern Matching）

模式匹配允许你根据标识符值的不同进行不同的运算。有点像一连串的if...else结构，也像C++和C#中的switch，但是它更为强大和灵活。
看下面Lucas序列的例子，Lucas序列定义跟Fibonacci序列一样，只不过起始值不同：
let rec luc x =
match x with
| x when x &amp;lt;= 0 -&amp;]]></description>
      <link>http://www.pin5i.com/showtopic-20098.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Sat, 06 Sep 2008 12:34:00 GMT</pubDate>
    </item>
    <item>
      <title>F#学习之路(6)列表</title>
      <description><![CDATA[列表在函数式编程中占据着重要的位置。在Lisp语言中，一切皆是列表，就连函数也是列表，列表在Lisp语言中发挥到了极致。F#语言列表语法来源于Ocaml，与Haskell语言也基本一致。本文只会讲解一些常用的使用方法，要很好的掌握列表，各位朋友可以google一下相关的内容。网络上对列表讨论比较深刻的大多以Haskell语言为例（Lisp语言列表很强大，但与大多数函数式语言列表的区别太大，不好借鉴]]></description>
      <link>http://www.pin5i.com/showtopic-20095.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Sat, 06 Sep 2008 08:15:00 GMT</pubDate>
    </item>
    <item>
      <title>F#最新信息：MonoDevelop、新书和新的CTP</title>
      <description><![CDATA[虽然依旧还是一个研究项目，但对于F#的热情持续不减。在今天的综述当中，我们来简短看一下F#有哪些最新信息。

首当其冲的一条信息是，新的MonoDevelop 2.0的F#插件。这个版本的MonoDevelop仍旧还处于预览状态，一些F#特性（例如，语法高亮）只有你得到MonoDevelop的最新源代码来编译后才能工作。
下一条信息是，新书《F# for Scientists》，Don Sy]]></description>
      <link>http://www.pin5i.com/showtopic-20080.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Thu, 04 Sep 2008 12:36:00 GMT</pubDate>
    </item>
    <item>
      <title>F# 之旅（二）：函数式编程（中）</title>
      <description><![CDATA[操作符（Operator） 


F#中，可把操作符看作一种函数调用的更为优雅的方式。操作符有两种：前缀（prefix）和中缀（infix），前者接受一个操作数（operand），出现在操作数之前；后者接受两个或多个操作数，出现在头两个操作数之间。 

F#提供了丰富的操作符集，可用于数字、布尔值、字符串和集合类型。这些操作符数量甚众，限于篇幅，在此不再一一详解。本文将着重介绍如何使用和]]></description>
      <link>http://www.pin5i.com/showtopic-20034.html</link>
      <category>F#</category>
      <author>cobra</author>
      <pubDate>Mon, 01 Sep 2008 12:23:00 GMT</pubDate>
    </item>
  </channel>
</rss>