<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fsharp_net的专栏]]></title><description><![CDATA[注：等同于http://www.cnblogs.com/tryfsharp]]></description><link>https://blog.youkuaiyun.com/fsharp_net</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fsharp_net]]></copyright><item><title><![CDATA[如果类是个泛型类的话dllImport 代码不能编译]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7646109</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7646109</guid><author>fsharp_net</author><pubDate>Fri, 08 Jun 2012 17:03:41 +0800</pubDate><description><![CDATA[你可能需要在dllImport代码中使用泛型类。但是你知道下面的代码段能通过编译么？
open System.Runtime.InteropServices
 
type B() =

    member this.F() = ()
 
module A =

    ["aa")>]
externvoid AA(B a)
答案是否定的。
注意最后一行将抛出一个错误：Un]]></description><category></category></item><item><title><![CDATA[注意：我们不能在模式匹配中放入lambda 表达式]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7646085</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7646085</guid><author>fsharp_net</author><pubDate>Fri, 08 Jun 2012 17:01:46 +0800</pubDate><description><![CDATA[以下代码在VS2012中不能通过编译，你知道么？知道为什么么？
let f0 x = x % 2 = 0
let f1 x = x % 2 
 
let ( | Even | _ | ) f (x:int) =
if f(x) thenSome(Math.Sign(x))
else None
let ( | Odd | _ | ) f (x:int) =
if f(x) thenS]]></description><category></category></item><item><title><![CDATA[F# 智能感应在某些情况下不能工作]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7646060</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7646060</guid><author>fsharp_net</author><pubDate>Fri, 08 Jun 2012 16:59:40 +0800</pubDate><description><![CDATA[在现在的Visual Studio 2012中，F#智能感应有时候在某些情况下不能工作。那么在何种情况下它会不工作呢？可以绕过去么？让我来告诉你详细情况吧。
请看如下代码：
open System.Collections.ObjectModel
 
module PortableLibrary1=
    type Keys=
    | One 
= 1
    | Two]]></description><category></category></item><item><title><![CDATA[F#与数学(Iv) - 泛型数字代码]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7623221</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7623221</guid><author>fsharp_net</author><pubDate>Fri, 01 Jun 2012 13:48:28 +0800</pubDate><description><![CDATA[泛型数字代码是能够被用来处理多种不同数字类型包括像int 型, decimal型 和float型或者甚至是我们自己的数字类型的一些计算（比如此系列的前篇文章中的时钟运算）。泛型数字代码区别于普通的F#泛型代码像'a 链表类型 或者List.map函数， 因为数字代码使用数字操作符， 比如为每个数字类型而区别定义的+或者 >=。
当编写有一些参数类型 'T的简单泛型代码的时候, 对于参数的类型我们]]></description><category></category></item><item><title><![CDATA[F#  ≥ C#(活动模式 和枚举)]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7623132</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7623132</guid><author>fsharp_net</author><pubDate>Fri, 01 Jun 2012 13:31:58 +0800</pubDate><description><![CDATA[F#提供了一个叫"活动模式"的有趣功能。它把输入的数据转换成其他不同的东西。
一个有趣的使用实例就是代替枚举。但我编程枚举的时候，我总不高兴去链接枚举项到它的定义。例如，下面的枚举定义了 数字枚举，
enum Numbers
{
    Odd,
    Even,
}
但是它没有说明什么是Odd，什么是Even。我试着使用特性或简单的注释，但是我真正想得到的是在F#中见到枚举项就获]]></description><category></category></item><item><title><![CDATA[Window Phone上的F# - 图形计算器]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7623124</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7623124</guid><author>fsharp_net</author><pubDate>Fri, 01 Jun 2012 13:18:10 +0800</pubDate><description><![CDATA[最近在西雅图F#小组期间，我被问到怎样用F#来做windows
 phone calculator。若是你知道F#，它并不难。
计算器的骨干就是一个字符串解析器。它能被从头开始写或者用已有的东西来写。既然我想投入生产而不是准备一个面试，那么我选择使用F# powerpack提供的已有的yacc解析器。如果我把前后端的yacc分析器结合起来，大部分工作就完成了，余下的就是去补下你的yacc\le]]></description><category></category></item><item><title><![CDATA[F#互操作中的一招]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7623102</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7623102</guid><author>fsharp_net</author><pubDate>Fri, 01 Jun 2012 13:13:40 +0800</pubDate><description><![CDATA[当我尝试破解.CAB文件的时候， 我发现F#里面的COM交互不同于C#。
在从"COM"选项卡增加了"Microsoft Shell Controls And Automation"之后，C#里面的实例代码像下面的代码。
bool ExpandCabFile(string CabFile,string DestDir)
    {
      if (!Directory.Exists(D]]></description><category></category></item><item><title><![CDATA[Type Provider - 通过 给一个自定义基类共享信息]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7623056</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7623056</guid><author>fsharp_net</author><pubDate>Fri, 01 Jun 2012 12:57:24 +0800</pubDate><description><![CDATA[我有一个坏习惯，对我来说，忘记它不是很容易。昨天晚上，这个小怪物又来困扰了我。可能我不能解决之前的问题，相反我被引诱到一片新领土。昨天晚上，这个怪物提醒了我单元测试 type provider, 使我想到怎样在不同的type provider方法间共享信息。
目前的type provider的方法调用是独立的， 几乎没有如何维护一个内部状态的例子。正则表达式type provider是一个例子。]]></description><category></category></item><item><title><![CDATA[F#3.0自动地实现属性]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7597747</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7597747</guid><author>fsharp_net</author><pubDate>Thu, 24 May 2012 11:41:40 +0800</pubDate><description><![CDATA[F#3.0实现了几个新的功能：Automatically Implemented Property(AIP).这简化了在类型定义里面的属性声明，但不仅仅是这些。
 
基本的AIP是，用更简明的语法，你就能定义一个属性。下面的MyProperty是一个AIP.
 
typeMyType() =
class
memberval
MyProperty = 0 with get, set]]></description><category></category></item><item><title><![CDATA[F# 3.0 CLIMutable特性]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7597634</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7597634</guid><author>fsharp_net</author><pubDate>Thu, 24 May 2012 11:30:36 +0800</pubDate><description><![CDATA[如果你曾经用一些设计器支持使用过XAML，那么你将额外地受益于设计器所带来的好处。我已经花费了数周，不用实现任何功能和设计器支持的工作。这里描述了一个案例。默认的构造函数是关键！不幸地是，F#里面的
 record类型没有一个默认的构造函数，这使绑定变得困难。
 
现在我们有CTlMutable来解决这个问题。CTlMutable截屏如下：
 
如果你定义下面的F#代码：
[ ]
t]]></description><category></category></item><item><title><![CDATA[F#和C#里面的NULL 值]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7597558</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7597558</guid><author>fsharp_net</author><pubDate>Thu, 24 May 2012 11:06:12 +0800</pubDate><description><![CDATA[首先，NULL对于F#类型来说是不允许的值，这在某种意义上是好的，但是由此也带来了麻烦。
 
第一个需要可能是：忘记所有关于option和NULL的参数，我需要NULL,那是我编程的方式。那么好。你可以使用你允许它为NULL的类型的[]特性。
 
真正走进F#的人们同意使用option是一个更好的选择。然而，这种限制使F#很难和C#程序交流。例如，你想从C#里面使用F#库。你真的能够禁止C]]></description><category></category></item><item><title><![CDATA[模式匹配的类型测试不能识别List<’a>]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7575170</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7575170</guid><author>fsharp_net</author><pubDate>Thu, 17 May 2012 10:05:31 +0800</pubDate><description><![CDATA[我在Visual Studio论坛上读过一个很有趣的论坛帖子，内容大致是这样的：
当试图测试一个obj对象是否是一个空的list，我们不能用模式匹配的类型测试来达到目的，具体代码如下：
let empt (o: obj) =
     match owith
     | :? List 
as l when l.IsEmpty->true
     | _ 
->false
编译]]></description><category></category></item><item><title><![CDATA[F#与数学(III) – 自定义数字类型(PartIII)]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7517121</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7517121</guid><author>fsharp_net</author><pubDate>Fri, 27 Apr 2012 13:00:09 +0800</pubDate><description><![CDATA[用全局关联来支持矩阵
我们的数字类型可以被用在一些标准的库函数如List.sum中，因为它们实现一些被List.sum必需的静态成员约束的成员。然而，这种方法对复杂的数据类型如泛型矩阵不工作。如果我们试图用我们的类型写任意矩阵计算，这将是不工作的，因为泛型矩阵类型不能自动的使用我们提供的重载操作符和成员。
为了支持矩阵我们需要提供所谓的数值关联。它是个简单的接口，包含了我们的类型上能被执行的数]]></description><category></category></item><item><title><![CDATA[F#与数学(III) – 自定义数字类型(PartII)]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7517096</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7517096</guid><author>fsharp_net</author><pubDate>Fri, 27 Apr 2012 12:51:27 +0800</pubDate><description><![CDATA[交互地测试数字类型
下一步，我们将用F#交互来验证我们所写的代码到目前为止是按预期工作的。在这一点上，我们甚至没有生成库。我们仅仅写了一些F#的源代码，想不生成库来测试这些源代码。我们将使用在F#脚本文件中写入的交互式测试。一旦你建立了库，就可以很容易地用NUnit，XUnit或者其他测试框架把它们转变成相应的单元测试。
为了测试我们在源代码级别实现的类型，我们先添加一个新的名为Test.fs]]></description><category></category></item><item><title><![CDATA[F#与数学(III) – 自定义数字类型(PartI)]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7516955</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7516955</guid><author>fsharp_net</author><pubDate>Fri, 27 Apr 2012 11:26:49 +0800</pubDate><description><![CDATA[本章中，我们定义用于模算术运算[1]（也称为时钟运算）的F#数字类型。模算术用于当我们想保留一个通过循环计算在指定范围内的值。例如，时钟的最大值为12小时。当我们将11小时和3小时相加的时候，数值会溢出，结果就为2小时。且别说时钟，这种数字系统对密码学，音乐等也是必需的。
本文介绍了几种在F#中定义任何新的数字类型时必不可少的技术。更重要的是，你将学会如何：
::  用重载运算符定义一个数字类]]></description><category></category></item><item><title><![CDATA[Visual F# 3.0 Beta 介绍]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7415893</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7415893</guid><author>fsharp_net</author><pubDate>Sat, 31 Mar 2012 15:29:52 +0800</pubDate><description><![CDATA[就像Jason Zander在他的博客里公布的那样，Visual
 Studio 11 Beta现在已经可以下载了！这个版本包含F#
 3.0的Beta版，此F#
 3.0介绍了F#信息富态编程
 
Beta版本发布了一些新的F#特性，包括：可移植库支持，加强的Type
 Providers，改善的智能感应，以及支持任意CPU的FSI版本。我们也已经更新了F#
 3.0 Beta的例]]></description><category></category></item><item><title><![CDATA[F#与数学(II) – 在图形算法中使用矩阵(PartIII)]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7378394</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7378394</guid><author>fsharp_net</author><pubDate>Wed, 21 Mar 2012 16:03:15 +0800</pubDate><description><![CDATA[其他矩阵操作
我们将简单的介绍一些F# PowerPack中提供的关于矩阵的有用的函数与操作符用来总结这部分内容。下面的列表给出了一组相似函数的使用示例。




逐点操作
Matrix.cptMax
Matrix.cptMin
Operators: + and .*

matrix -> matrix -> matrix
这些函数与操作对作为参数传入的两个矩阵的对应元素执]]></description><category></category></item><item><title><![CDATA[F#与数学(II) – 在图形算法中使用矩阵(PartII)]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7378334</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7378334</guid><author>fsharp_net</author><pubDate>Wed, 21 Mar 2012 15:47:02 +0800</pubDate><description><![CDATA[使用矩阵
Matrix是一种可变类型，因此它可以在创建后被修改。当你必须要修改矩阵式，最好的方法就是一次性的修改，修改后将之视为不可变的（例如：当矩阵作为函数结果被返回时，而此函数是使用可变性来实现的）。这样的话，你会在构造是得到好的性能，同时你可以保持代码的其余部分透明地引用它。
 
用序号访问矩阵元素
下面的代码展示了直接创建一个4x4的邻接矩阵的方法，此邻接矩阵来自于本文介绍部分所讨]]></description><category></category></item><item><title><![CDATA[F#与数学(II) – 在图形算法中使用矩阵(PartI)]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7378234</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7378234</guid><author>fsharp_net</author><pubDate>Wed, 21 Mar 2012 15:41:58 +0800</pubDate><description><![CDATA[在本系列的上篇文章中，我们了解了complex和BigRational类型，它们都是位于F#
 PowerPack中的数字类型。除了这两种，PowerPack库也包含了一种名为matrix的类型，此类型表示一种由浮点数组成的二维矩阵。
 
在这篇文章中，你将学会在F#中如何使用矩阵，如何使用F#PowerPack中提供的相关函数。我将用一个例子来介绍此语言库，此例子使用所谓的邻接矩阵来展示图]]></description><category></category></item><item><title><![CDATA[F# 入门(十三)：Record(记录)]]></title><link>https://blog.youkuaiyun.com/fsharp_net/article/details/7352076</link><guid>https://blog.youkuaiyun.com/fsharp_net/article/details/7352076</guid><author>fsharp_net</author><pubDate>Wed, 14 Mar 2012 11:02:44 +0800</pubDate><description><![CDATA[Record在F#中是一种很重要的用来存贮数据的结构.它与元组和F# 中的枚举（DiscriminatedUnions）差不多，但是又有比他们更方便的地方，如：我们可以很轻松的访问Record中的每个元素的值，而不需要如元组那样做更多的操作才可取得。
下面我们看看Record的定义及与之相关的操作
Record的定义
我们使用type 关键字来定义Record，如我们定义一个名为myReco]]></description><category></category></item></channel></rss>