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.属于相同类型的表达式,必然会有相同的属性。但拥有相同属性的表达式,却不一定属于相同的类型。
Haskell Types与Typeclasses的更多相关文章
- haskell Types 和 Typeclasses
Algebraic Data Types 入门 在前面的章节中,我们谈了一些 Haskell 内置的类型和 Typeclass.而在本章中,我们将学习构造类型和 Typeclass 的方法. 我们已经 ...
- Haskell手撸Softmax回归实现MNIST手写识别
Haskell手撸Softmax回归实现MNIST手写识别 前言 初学Haskell,看的书是Learn You a Haskell for Great Good, 才刚看到Making Our Ow ...
- Typeclassopedia
https://wiki.haskell.org/wikiupload/8/85/TMR-Issue13.pdf By Brent Yorgey, byorgey@gmail.com Original ...
- Type class-Typeclass-泛型基础上的二次抽象---随意多态
对泛型的类型添加约束,从而使泛型类型的变量具有某种通用操作. 再使用这些操作,参与到其它操作中. In computer science, a type class is a type system ...
- [Real World Haskell翻译]第20章 Haskell系统编程
第20章 Haskell系统编程 到目前为止,我们已经讨论了大多数的高层次的概念.Haskell也可以用于较低级别的系统编程.很可能是用haskell编写出底层的与操作系统接口的程序. 在本章中,我们 ...
- haskell笔记1
haskell platform下载:https://www.haskell.org/platform/ 进入haskell控制台,终端输入 $ ghci 编译文件 :l file.hs 数组操作 & ...
- Introduction to Haskell
"I know why you're here. ...why you hardly sleep, why night after night, you sit by your comput ...
- Haskell 笔记(三)类型系统
类型 (Type) Haskell的类型系统式静态类型系统,在编译的时候就知道数据类型,所以不同类型的值运算在编译的时候就会报错,比如用布尔值和整数运算,在C语言中这种运算就不会报错. Haskell ...
- Haskell复习笔记(一)
Haskell笔记这是第三次总结,前两次都因为各种原因丢失了,对于Haskell我算不上什么大神,只不过在大学时为了学习算法时选择了Haskell. 当时的入门书籍选择的是<Learn You ...
随机推荐
- 安装软件时出现error 1337 【添加权限】
Error 1317 An error occurred while attempting to create the directory Drive Name:\Folder Name https: ...
- Java轻量级业务层框架Spring两大核心IOC和AOP原理
IoC(Inversion of Control): IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些 ...
- java回调初步学习
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273),请尊重他人的辛勤劳动成果,谢谢以前不理解什 ...
- EasyUI-validatebox 自定义validType验证
根据项目要求,对于一些信息的验证也越来越特殊,当你发现EasyUI-validatebox提供的常用的validType验证类型已经满足不了你时,你可以选择自己自定义新的validType来完成信息验 ...
- 【学习笔记】在原生javascript中使用ActiveX和插件
什么是插件 现在的浏览器提供了大量的内置功能,但仍然有一些工作无法完成,如播放音频和视频.插件及其扩展浏览器功能就尤为重要. 插件是可下载的应用程序,可以插入到浏览器中,现在有很多不同的插件,常用的有 ...
- 给ListBox每项加图标
先设置listBoxMsg.DrawMode = DrawMode.OwnerDrawFixed; private void listBoxMsg_DrawItem(object sender, Dr ...
- Linux 常见问题解决办法
1.用户切换后显示 -bash-4.1 $ 表示该用户下的配置文件缺失,切换到该用户下(-bash-4.1),使用命令查(pwd)看用户所在位置.如 /home/gpadmin. 使用 cp -a / ...
- CDN加速原理
原文链接:http://www.72e.net/cdnspeed/cdnyuanli.aspx 首先,让我们来看一下传统的Internet网络的基本结构和数据传输情况,如下图所示. Internet ...
- Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写
最常见的: 静态地址重定向到带参数的动态地址 rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent ...
- PBOC金融IC卡,卡片与终端交互的13个步骤,简介-第三组
七:终端风险管理-必选但包含可选步骤异常文件:终端检查应用主账号是否在异常文件列表(卡号黑名单)中.商户强制联机:商户可以将当前交易强制为联机处理.最低限额:控制交易当前交易金额或同一张卡片连续几笔交 ...