Haskell的数据类型

查看全文


程序=数据+算法,要学习一门语言,就必须先了解它的数据类型,Haskell的数据类型主要分四类:
基本类型,Tuple,List,自定义类型。
基本类型分两部分,一部分是Int Char Bool Float之类的基本类型,另一部分是这些类型的分类,这些类型的分类会在Haskell的函数部分涉及。
Tuple是最简单的部分,只要记住fst和snd就可以了
List是最强大也是最复杂的类型,也是要重点掌握的类型,很多操作都是基于List的特性的。
自定义类型
基本类型
Haskell的基本类型有:Char Bool Int Integer Float Double,可以使用命令:t查看数据类型,这和python的type 关键字很像,如
Prelude> :t 3
3 :: (Num t) => t
Prelude> :t 'h'
'h' :: Char
Prelude> :t "hello"
"hello" :: [Char]
Prelude> :t [1,2,3]
[1,2,3] :: (Num t) => [t]
1. Int 是数字
2. Integer也是数字,但是Integer可以表示大数。这和Java的Integer一样
3. Float是单精度浮点数
4. Double是双精度浮点数
5. Bool 是布尔值, True和False
6. Char 是字符
类型类,这个一般出现在函数的定义中,在后面
1. Ord 有序的类型
2. Show 可显示的
3. Read
4. Enum
5. Bounded
6. Num 数值类型,整数和小数
7. Integral 数值类型,整数
8. Floating 数值类型,小数

元组Tuple
1.元组是两个元素组成的结构,和Python的tuple一样,有两个操作元组的函数fst和snd,分别取元组的第一和第二个元素。
let hjz=(3,4)
fst hjz
snd hjz
let x=(4,5)
2.元组可以比较,只要类型相对匹配
hjz<x
3.元组的两个元素类型可以不同
let hjz=([1,2], 'h')

列表List
列表是Haskell的一个重要类型,相关操作也特别多
[1,2,3,4]
1. 列表合并 ++ 与 :。列表与列表合并用++,列表中加入元素用:
Prelude> [1,2,3,4]++[5,6,7,8]
[1,2,3,4,5,6,7,8]
Prelude> 5:[1,2,3,4]
[5,1,2,3,4]
2. 列表下标!!
[1,2,3,4]的第2个元素
Prelude> [1,2,3,4] !! 2
3. 子集: head(第一个元素) last(最后一个元素) tail(除去第一个元素的子集) init(除去最后一个元素的子集) 
Prelude> let hjz=[1,2,3,4]
Prelude> head hjz
1
Prelude> last hjz
4
Prelude> tail hjz
[2,3,4]
Prelude> init hjz
[1,2,3]
4. 常用操作: length(长度) null(是否为空) reverse(反转) take(头部子集) drop(尾部子集) minimum(最小值) maximum(最大值) sum(连加总和) product(连乘总积) elem(是否是集合的元素)
Prelude> length(hjz)
4
Prelude> null(hjz)
False
Prelude> null([])
True
Prelude> reverse(hjz)
[4,3,2,1]
Prelude> take 2 (hjz)
[1,2]
Prelude> drop 1 (hjz)
[2,3,4]
Prelude> minimum(hjz)
1
Prelude> maximum(hjz)
4
Prelude> sum(hjz)
10
Prelude> product(hjz)
24
Prelude> 3 `elem` hjz
True
Prelude> 5 `elem` hjz
False
5. 有序子集
从1到10的整数集合 [1..10], 从1到10的奇数集合[1,3..10]
6. 表达式

posted @ 2017-08-16 20:17  天涯海角路  阅读(830)  评论(0)    收藏  举报