可使用 :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. ubuntu文件夹建立软链接方法

    1:预备知识 -s 是代号(symbolic)的意思. 这里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化:第二,ln的链接又软链 ...

  2. Java的数据类型

    在JAVA中一共有八种基本数据类型,他们分别是byte.short.int.long.float.double.char.boolean整型其中byte.short.int.long都是表示整数的,只 ...

  3. 一个简单的JAVA C/S多线程应用

      import java.net.*;import java.io.*;public class simpleServer{private static ServerSocket serverSoc ...

  4. angularjs指令系统系列课程(2):优先级priority,模板template,模板页templateUrl

    今天我们先对 priority,template,templateUrl进行学习 1.priority 可取值:int 作用:优先级 一般priority默认为0,数值越大,优先级越高.当一个dom元 ...

  5. Windows 更改桌面位置

    运行regedit HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 找到 ...

  6. Memcached的使用

    为什么要使用Memcached? 1)高并发访问数据库的痛:死锁 2)磁盘IO之痛 3)读写性能完美 4)超简单的集群搭建Cluster 5)开源 6)性能最佳 7)丰富的成功案例 Memcached ...

  7. test 2017-1-5

    //    dpm(drupal_get_filename('module','devel'));//    sites/all/modules/contrib/dev/devel/devel.mod ...

  8. C#: DataBase

    using System.Data.SqlClient; namespace WindowsFormsApplication1{ class DB { private SqlConnection co ...

  9. 使用Let`s encrypt 免费的https 证书

    在iOS上以前暂时屏蔽https使用http的接口,将在未来被苹果拒绝: 之前传苹果会在2017年1月1日强制要求支持https,但是现在苹果又延迟该计划了 https://developer.app ...

  10. Python之路 day2 按行读文件

    #1. 最基本的读文件方法: # File: readline-example-1.py file = open("sample.txt") while 1: line = fil ...