关闭

[置顶] F# 2.0 & F#是什么

F# 2.0 及 F# 是什么 [注意,如果你想使用免费下载的F#2.0,你应该使用2010年8月发布的F#2.0免费下载的MSI和ZIP。这个版本将现有可免费使用的F#的编程工具扩展到了.NET 4.0。] 4月12日在世界各地举办了第五个Visual Studio 2010发布会,正像Bob Muglia, Jason Zander 和S. Somasegar和在拉斯维加斯的现场直...
阅读(744) 评论(0)

如果类是个泛型类的话dllImport 代码不能编译

你可能需要在dllImport代码中使用泛型类。但是你知道下面的代码段能通过编译么? open System.Runtime.InteropServices   type B() =     member this.F() = ()   module A =     ["aa")>] externvoid AA(B a) 答案是否定的。 注意最后一行将抛出一个错误:Un...
阅读(1153) 评论(0)

注意:我们不能在模式匹配中放入lambda 表达式

以下代码在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...
阅读(1222) 评论(0)

F# 智能感应在某些情况下不能工作

在现在的Visual Studio 2012中,F#智能感应有时候在某些情况下不能工作。那么在何种情况下它会不工作呢?可以绕过去么?让我来告诉你详细情况吧。 请看如下代码: open System.Collections.ObjectModel   module PortableLibrary1=     type Keys=     | One = 1     | Two...
阅读(1162) 评论(0)

F#与数学(Iv) - 泛型数字代码

泛型数字代码是能够被用来处理多种不同数字类型包括像int 型, decimal型 和float型或者甚至是我们自己的数字类型的一些计算(比如此系列的前篇文章中的时钟运算)。泛型数字代码区别于普通的F#泛型代码像'a 链表类型 或者List.map函数, 因为数字代码使用数字操作符, 比如为每个数字类型而区别定义的+或者 >=。 当编写有一些参数类型 'T的简单泛型代码的时候, 对于参数的类型我们...
阅读(1720) 评论(1)

F# ≥ C#(活动模式 和枚举)

F#提供了一个叫"活动模式"的有趣功能。它把输入的数据转换成其他不同的东西。 一个有趣的使用实例就是代替枚举。但我编程枚举的时候,我总不高兴去链接枚举项到它的定义。例如,下面的枚举定义了 数字枚举, enum Numbers {     Odd,     Even, } 但是它没有说明什么是Odd,什么是Even。我试着使用特性或简单的注释,但是我真正想得到的是在F#中见到枚举项就获...
阅读(1551) 评论(0)

Window Phone上的F# - 图形计算器

最近在西雅图F#小组期间,我被问到怎样用F#来做windows phone calculator。若是你知道F#,它并不难。 计算器的骨干就是一个字符串解析器。它能被从头开始写或者用已有的东西来写。既然我想投入生产而不是准备一个面试,那么我选择使用F# powerpack提供的已有的yacc解析器。如果我把前后端的yacc分析器结合起来,大部分工作就完成了,余下的就是去补下你的yacc\le...
阅读(1386) 评论(0)

F#互操作中的一招

当我尝试破解.CAB文件的时候, 我发现F#里面的COM交互不同于C#。 在从"COM"选项卡增加了"Microsoft Shell Controls And Automation"之后,C#里面的实例代码像下面的代码。 bool ExpandCabFile(string CabFile,string DestDir)     {       if (!Directory.Exists(D...
阅读(1048) 评论(0)

Type Provider - 通过 给一个自定义基类共享信息

我有一个坏习惯,对我来说,忘记它不是很容易。昨天晚上,这个小怪物又来困扰了我。可能我不能解决之前的问题,相反我被引诱到一片新领土。昨天晚上,这个怪物提醒了我单元测试 type provider, 使我想到怎样在不同的type provider方法间共享信息。 目前的type provider的方法调用是独立的, 几乎没有如何维护一个内部状态的例子。正则表达式type provider是一个例子。...
阅读(1930) 评论(0)

F#3.0自动地实现属性

F#3.0实现了几个新的功能:Automatically Implemented Property(AIP).这简化了在类型定义里面的属性声明,但不仅仅是这些。   基本的AIP是,用更简明的语法,你就能定义一个属性。下面的MyProperty是一个AIP.   typeMyType() = class memberval MyProperty = 0 with get, set...
阅读(1192) 评论(0)

F# 3.0 CLIMutable特性

如果你曾经用一些设计器支持使用过XAML,那么你将额外地受益于设计器所带来的好处。我已经花费了数周,不用实现任何功能和设计器支持的工作。这里描述了一个案例。默认的构造函数是关键!不幸地是,F#里面的 record类型没有一个默认的构造函数,这使绑定变得困难。   现在我们有CTlMutable来解决这个问题。CTlMutable截屏如下:   如果你定义下面的F#代码: [ ] t...
阅读(1172) 评论(0)

F#和C#里面的NULL 值

首先,NULL对于F#类型来说是不允许的值,这在某种意义上是好的,但是由此也带来了麻烦。   第一个需要可能是:忘记所有关于option和NULL的参数,我需要NULL,那是我编程的方式。那么好。你可以使用你允许它为NULL的类型的[]特性。   真正走进F#的人们同意使用option是一个更好的选择。然而,这种限制使F#很难和C#程序交流。例如,你想从C#里面使用F#库。你真的能够禁止C...
阅读(1551) 评论(0)

模式匹配的类型测试不能识别List<’a>

我在Visual Studio论坛上读过一个很有趣的论坛帖子,内容大致是这样的: 当试图测试一个obj对象是否是一个空的list,我们不能用模式匹配的类型测试来达到目的,具体代码如下: let empt (o: obj) =      match owith      | :? List as l when l.IsEmpty->true      | _ ->false 编译...
阅读(1089) 评论(1)

F#与数学(III) – 自定义数字类型(PartIII)

用全局关联来支持矩阵 我们的数字类型可以被用在一些标准的库函数如List.sum中,因为它们实现一些被List.sum必需的静态成员约束的成员。然而,这种方法对复杂的数据类型如泛型矩阵不工作。如果我们试图用我们的类型写任意矩阵计算,这将是不工作的,因为泛型矩阵类型不能自动的使用我们提供的重载操作符和成员。 为了支持矩阵我们需要提供所谓的数值关联。它是个简单的接口,包含了我们的类型上能被执行的数...
阅读(1064) 评论(0)

F#与数学(III) – 自定义数字类型(PartII)

交互地测试数字类型 下一步,我们将用F#交互来验证我们所写的代码到目前为止是按预期工作的。在这一点上,我们甚至没有生成库。我们仅仅写了一些F#的源代码,想不生成库来测试这些源代码。我们将使用在F#脚本文件中写入的交互式测试。一旦你建立了库,就可以很容易地用NUnit,XUnit或者其他测试框架把它们转变成相应的单元测试。 为了测试我们在源代码级别实现的类型,我们先添加一个新的名为Test.fs...
阅读(1209) 评论(0)

F#与数学(III) – 自定义数字类型(PartI)

本章中,我们定义用于模算术运算[1](也称为时钟运算)的F#数字类型。模算术用于当我们想保留一个通过循环计算在指定范围内的值。例如,时钟的最大值为12小时。当我们将11小时和3小时相加的时候,数值会溢出,结果就为2小时。且别说时钟,这种数字系统对密码学,音乐等也是必需的。 本文介绍了几种在F#中定义任何新的数字类型时必不可少的技术。更重要的是,你将学会如何: ::  用重载运算符定义一个数字类...
阅读(1294) 评论(0)
53条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:59389次
    • 积分:1122
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:0篇
    • 译文:36篇
    • 评论:7条
    最新评论