Haskell入门(二):类型(Type)

作者 : 开心源码 本文共1308个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共156人阅读

python入门编程, 之后用c++学习数据结构,Haskell萌新。

参考教材:Learn You a Haskell for Great Good (http://learnyouahaskell.com/)

操作环境:Ubuntu下Linux64位虚拟机


Chapter2部分内容

常见的类型(Types)及特点

? ? Int :整型,常见的 其范围由机器位数决定。书中说64位下是-2^63 ~ 2 ^63 (不过此处存疑,可能下界要+1?)?

? ? Integer: 没有上下界的整型

? ? Float:单精度实数型(假如没记错是十进制的6位左右)

? ? Double:双精度实数型

? ? Bool: 布尔型,只有True 和 False 两种取值

? ? Char: 单个Unicode 字符,使用时需要单引号(字符串用双引号,这一点与c++相似)

? ? 除了上面提到的以外,还有复合类型List 和Tuple。其中List类型由其中元素的类型决定,Tuple的类型由每一个元素的类型及元素个数决定。

? ? 需要注意的是, Haskell中所有的类型名首字母都大写。

查看对象类型

? ? 在Haskell里,使用:t object 来查看对象的类型。返回 object :: Type 。其中,双冒号表示 has type of (类型为)。

? ? 以下是常见对象的类型。对于[ ] 这种元素类型不确定的,返回 [ a ] 。(这可以与后面函数部分联络起来)

常见对象类型

函数类型公告(type declaration)

? ? ? ? 使用 函数名::输入参数1类型->输入参数2类型->… ->输入参数n类型 -> 返回值类型

函数示例

函数类型变量(type variables)

? ? 我们有时希望函数具备更广泛的使用,能对一系列类型的输入进行解决。因此有了函数类型变量。它的功能相似于c++里的template 模板函数,不过写法更加方便。通常使用a, b, c, d等单个小写字母表示类型变量。我们可以通过:t查看内部少量函数的公告。

少量函数的公告

类型的类限制(class constraint)

? ? 有时我们希望对上面提到的类型变量加少量条件,希望输入的类型具备特定的性质。具备某些特定性质的类型们在一起组成了一个类,而我们使用=>对类加以限制。

? ? 这里的类与c++,python中的有区别,更多的是指某个类型具备某种特定的性质,因此一个类型可以从属于多个类,一个类也可以包含多个类型。当然,类之间也存在包含关系(与继承相似,但也有区别)

????常见的类有:

? ? ? ? Eq(可判断元素能否相同)

? ? ? ? Ord(元素可比较大小、优先级关系)

????????Enum(元素以肯定次序排列)?

????????Show(元素可以以String形式输出)

????????Read(元素可以由String转化而来的。使用时可以使用::来限制转化而来的类的类型)

? ? ? ? Bounded(元素有上下界(minBound, maxBound))

? ? ? ? Num: 元素有数字类型。(Int, Integer, Float, Double都是)

? ? ? ? Floating: 元素是浮点类型(Float, Double)

? ? ? ? Integral: 元素是整数类型。(Int, Integer)

? ??????

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Haskell入门(二):类型(Type)

发表回复