Haskell 笔记 (三) 类型
程序员文章站
2024-01-29 19:32:52
...
类型
Haskell有强大的类型系统
- 每个表达式在编译时都会明确类型,因此可以有更多的信息来检查错误。
- 支持类型推导。
Prelude> :t True
True :: Bool
Prelude> :t 'a'
'a' :: Char
Prelude> :t "hi"
"hi" :: [Char]
Prelude> :t (True, 'a')
(True, 'a') :: (Bool, Char)
Prelude> :t (True, "ss")
(True, "ss") :: (Bool, [Char])
Prelude> :t 4==5
4==5 :: Bool
::
读作: “它的类型为”
4 == 5 :: Bool
读作4==5 它的类型为 Bool
Prelude> :t cycle
cycle :: [a] -> [a]
函数也有类型, "[a] -> [a]"表示入参为[a],返回值为[a]。 多个入参一样是通过“->”连接,最后一个表示返回值。
注意:凡是明确的类型,其首字母必定是大写。
常见类型
- Int 有界整数 范围2的-63次方~2的63次方-1
- Integer *整数 可以存放非常大的整数,但效率不如Int高。
- Float 单精度浮点数
- Double 双精度浮点数
- Bool 布尔值
- Char 表示一个Unicode字符
- 元祖 也是类型,不过它的类型取决于其中项的类型以及数目。理论上可以有无限种类型,实际上元祖最大项的数量为62。 另外注意空元祖也是一种类型,只有一种值,即().
类型类
类型类是一组函数的集合,定义行为的接口。如果一个类型是某种类型类的实例,那么他必须实现了该类型了所描述的行为。
- Eq类型类
- Ord类型类
- Show类型类
- Read类型类
- Enum类型类
- Bounded类型类
- Num类型类
- Floating类型类
- Integeral类型类
推荐阅读
-
Haskell学习笔记:Lambda函数&局部应用与局部套用(Currying and partial application)
-
Haskell学习笔记:函数定义与local definition
-
Haskell 学习笔记(二)
-
Haskell语言学习笔记(62)Divisible
-
Haskell学习笔记:Input and Output
-
Haskell 笔记 (三) 类型
-
Haskell语言学习笔记(63)Dicidable
-
详解MySQL存储过程参数有三种类型(in、out、inout)_MySQL
-
Mysql测试三:Mysql + DRBD + Heartbeat(v1)基本配置笔记及切换
-
php学习笔记(三)操作符与控制结构_php入门_脚本之家