zoukankan      html  css  js  c++  java
  • Haskell Types与Typeclasses

      可使用 :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.属于相同类型的表达式,必然会有相同的属性。但拥有相同属性的表达式,却不一定属于相同的类型。

  • 相关阅读:
    安装RVM时报错 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
    如何查看docker run启动参数命令
    ProxySQL 基础篇
    Kafka too many open files解决
    离线方式搭建本地的nginx yum源
    Ceph配置参数详解
    osd自杀问题跟踪
    由一次slow-request浅谈Ceph scrub原理
    Power Apps 定制提交表单后的效果
    基于arm的Linux内核编译
  • 原文地址:https://www.cnblogs.com/wscy/p/4898967.html
Copyright © 2011-2022 走看看