可使用 :t 命令检测表达式类型。

  明确的类型首字母必大写。

一、Types

  Char

  Bool

  Int(有界,与Integer类型对比效率高)

  Integer(无界,与Int类型对比效率低)

  Float

  Double

  Tuple的类型取决于长度和其中元素的类型。

  List的类型只取决于其中元素的类型。

二、Typeclasses

  =>”表示约束。

  Eq:可比较相等性。

  Ord:可比较大小。

  compare:取两个Ord中相同类型的值做参数,结果为LT,GT,EQ三种情况(小于/大于/相等)。

  Show:可用字符串表示。

       show:将Show中成员类型转换为字符串。

  Read:与Show相逆。

       read:将字符串转换为Read中的成员类型。但是要明确其输出的类型,不明确的转换无法进行。read "1"是错误的表达式,而read "1" :: Int才是正确的表达式。

  Enum:表示可连续的类型。

       succ:前继。

       pred:后继。

  Bounded:拥有界限。

       minBound:下边界。例,minBound :: Int表达式是查看Int类型的下限是多少。

       maxBound:上边界。例,maxBound :: Int表达式是查看Int类型的上限是多少。

  Num:数字。

  Integral:整数。包括Int和Integer类型

  Floating:浮点数,包括Float和 Double类型。

       fromIntegral:将Integral转换为Num型。

三、对Types 与 Typeclasses的理解。

  1.一个表达式只能属于一种Type,但可以属于多种Typeclasses。

  2.把Type理解成类型,一个表达式只能属于一种类型。把Typeclass理解成属性,一个表达式可以拥有多种属性。

  3.属于相同类型的表达式,必然会有相同的属性。但拥有相同属性的表达式,却不一定属于相同的类型。

Haskell Types与Typeclasses的更多相关文章

  1. haskell Types 和 Typeclasses

    Algebraic Data Types 入门 在前面的章节中,我们谈了一些 Haskell 内置的类型和 Typeclass.而在本章中,我们将学习构造类型和 Typeclass 的方法. 我们已经 ...

  2. Haskell手撸Softmax回归实现MNIST手写识别

    Haskell手撸Softmax回归实现MNIST手写识别 前言 初学Haskell,看的书是Learn You a Haskell for Great Good, 才刚看到Making Our Ow ...

  3. Typeclassopedia

    https://wiki.haskell.org/wikiupload/8/85/TMR-Issue13.pdf By Brent Yorgey, byorgey@gmail.com Original ...

  4. Type class-Typeclass-泛型基础上的二次抽象---随意多态

    对泛型的类型添加约束,从而使泛型类型的变量具有某种通用操作. 再使用这些操作,参与到其它操作中. In computer science, a type class is a type system  ...

  5. [Real World Haskell翻译]第20章 Haskell系统编程

    第20章 Haskell系统编程 到目前为止,我们已经讨论了大多数的高层次的概念.Haskell也可以用于较低级别的系统编程.很可能是用haskell编写出底层的与操作系统接口的程序. 在本章中,我们 ...

  6. haskell笔记1

    haskell platform下载:https://www.haskell.org/platform/ 进入haskell控制台,终端输入 $ ghci 编译文件 :l file.hs 数组操作 & ...

  7. Introduction to Haskell

    "I know why you're here. ...why you hardly sleep, why night after night, you sit by your comput ...

  8. Haskell 笔记(三)类型系统

    类型 (Type) Haskell的类型系统式静态类型系统,在编译的时候就知道数据类型,所以不同类型的值运算在编译的时候就会报错,比如用布尔值和整数运算,在C语言中这种运算就不会报错. Haskell ...

  9. Haskell复习笔记(一)

    Haskell笔记这是第三次总结,前两次都因为各种原因丢失了,对于Haskell我算不上什么大神,只不过在大学时为了学习算法时选择了Haskell. 当时的入门书籍选择的是<Learn You ...

随机推荐

  1. 关于欧几里得算法求最大公约数,即OJ1029的参考解法

    #include <stdio.h> int main(int argc, char *argv[]) { int a,b,c; scanf("%d %d",& ...

  2. Nexpose下载安装注册一条龙

    附上两个下载链接: Windows版本(64bit) : http://download2.rapid7.com/download/NeXpose-v4/NeXposeSetup-Windows64. ...

  3. 合并excel中多个sheet

    Sub 合并当前工作簿下的所有工作表() Application.ScreenUpdating = False For j = 1 To Sheets.Count If Sheets(j).Name ...

  4. 1. C语言中的数据结构.md

    C语言内建数据结构类型 整型 整型数据是最基本的数据类型,不过从整形出发衍生出好几种integer-like数据结构,譬如字符型,短整型,整型,长整型.他们都是最基本的方式来组织的数据结构,一般是几位 ...

  5. Spring和EJB3的技术对比

    随着EJB3规范以及支持EJB3的Java EE应用服务器的即将发布,全新Java EE体系架构的新战争将拉开帷幕,在过去3年中如火如荼的Spring占据了Java EE应用开发基础平台的大半江山,面 ...

  6. fonts.googleapis.com 加载慢的解决方法

    把:fonts.googleapis.com 替换成 fonts.useso.com

  7. Django + mysql 快速搭建简单web投票系统

    了解学习pyhton web的简单demo 1. 安装Django, 安装pyhton 自行百度 2. 执行命令创建project  django-admin.py startproject mysi ...

  8. JVM 内存管理机制

    1. 内存分配图:  两栈一区一堆一计数 方法区里面 包含了运行时常量 2. 对象创建过程: new A() 首先加载A的字节码. 分配内存,内存分配方式分两种,如果采用带压缩的垃圾回收策略,则采用“ ...

  9. jQuery.hasClass() 函数

    hasClass() 函数 判断当前选择元素是否有指定的类名 语法 $(selector).hasclass(classname) 返回值 返回值为布尔型(true/false) 如果当前选择对象包含 ...

  10. 慕课网__CSS__line height