码迷,mamicode.com
首页 > 其他好文 > 详细

12.5.1 声明计算类型

时间:2015-01-29 17:41:52      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:f#   函数编程   计算表达式   实用函数编程   查询表达式   

12.5.1 声明计算类型

 

在这个示例中,计算的类型(在 Haskell 术语中的单子类型)称为 ValueWrapper<T>,它只是存储泛型类型参数T 的值,并不会为类型增加任何其他功能。这就是说,计算只处理标准值,但是,我们能够用 C# 中的查询表达式, F# 中的计算表达式,写代码(来增加功能)。

清单 12.17 显示了在 C# 和 F# 中的类型声明。在 C# 中,我们创建简单的类,在 F# 中,将使用一个简单的只有一种情况的差别联合。

 

清单 12.17 C# 和 F# 中的计算值

// C# 的类声明

class ValueWrapper<T> {

  public ValueWrapper(T value) {

    this.Value = value;

  }

  public T Value { get; private set; }    [1]

}

 

// F# 的差别联合类型

type ValueWrapper<‘a> =

  | Value of ‘a    [2]

 

C# 的类是一个简单的不可变类型,存储了类型 T的值[1]。在 F# 中,使用了只有一个分支的差别联合,也很重要,它可以创建命名类型,以方便使用。我们很快就会看到,可以使用模式匹配(用 Value 识别器)就能访问这个值。有这个类型的模式匹配,永远也不会失败,因为只有一个分支,因此,可以直接在值绑定的内部使用,这在实现计算的算法时,非常有用。首先,我们看一下,用这种新类型能够写出什么种类的计算。

 

12.5.1 声明计算类型

标签:f#   函数编程   计算表达式   实用函数编程   查询表达式   

原文地址:http://blog.csdn.net/hadstj/article/details/43273119

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!