注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云水居

云在青山水在天,人在江湖不得闲

 
 
 

日志

 
 

Haskell的数据类型  

2010-12-13 20:16:44|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

查看全文


程序=数据+算法,要学习一门语言,就必须先了解它的数据类型,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. 表达式
  评论这张
 
阅读(1299)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017