haskell(8)
来源:互联网 发布:node sass作用 编辑:程序博客网 时间:2024/05/01 15:46
本博客所有内容是原创,未经书面许可,严禁任何形式的转载。
http://blog.csdn.net/u010255642
8、元组
元组和列表相似,但不同的是元组内的元素类型不要求一致,而且元素个数是确定的。
使用双重列表可以解决不定长多维数组的构造需要
*Main> let myarray1=[[1,2],[3,4,5],[5,6,7,8]]
*Main> let myarray2=[(1,2),(3,4),(5,6)]
*Main> myarray1
[[1,2],[3,4,5],[5,6,7,8]]
*Main> myarray2
[(1,2),(3,4),(5,6)]
*Main> myarray2!!2
(5,6)
*Main> myarray1!!2
[5,6,7,8]
*Main>
元组可以方便得实现一些特殊的要求,比如说,多维数组,每一维度的元素和类型都一样,因为元组做为列表的元素要求元组内元素内型一致,然后长度一致
*Main> let myarray2=[(1,2),(3,4),(5,6)]
*Main> myarray2
[(1,2),(3,4),(5,6)]
*Main> myarray2!!2
(5,6)
*Main>
带约束条件,生成以元组为元素的列表
Prelude> let mylist=[(x,y,z)|x<-[1..5],y<-[1..5],z<-[1..5],x*y==z]
Prelude> mylist
[(1,1,1),(1,2,2),(1,3,3),(1,4,4),(1,5,5),(2,1,2),(2,2,4),(3,1,3),(4,1,4),(5,1,5)]
Prelude>
我们可以尝试一些错误的做法,都无法成功:
*Main> let myarray2=[(1,'a'),(3,4),(5,6)]
<interactive>:46:26:
No instance for (Num Char)
arising from the literal `4'
Possible fix: add an instance declaration for (Num Char)
In the expression: 4
In the expression: (3, 4)
In the expression: [(1, 'a'), (3, 4), (5, 6)]
*Main> let myarray2=[(1,'a'),(3,4,88),(5,6)]
<interactive>:47:23:
Couldn't match expected type `(t0, Char)'
with actual type `(t1, t2, t3)'
In the expression: (3, 4, 88)
In the expression: [(1, 'a'), (3, 4, 88), (5, 6)]
In an equation for `myarray2':
myarray2 = [(1, 'a'), (3, 4, 88), (5, 6)]
*Main>
通过fst和snd取仅有成对元素的元组的第一个元素和第二个元素
*Main> let myarray2=[(1,'a'),(3,'b'),(5,'c')]
*Main> myarray2!!2
(5,'c')
*Main> fst(myarray2!!2)
5
*Main> snd(myarray2!!1)
'b'
Zip从列表生成成对元素的元组
*Main> zip [1,2,3,4] ["aa","bb","cc"]
[(1,"aa"),(2,"bb"),(3,"cc")]
*Main>
- haskell(8)
- Haskell
- Haskell
- Haskell趣学指南7-8
- Haskell语言学习笔记(8)Monoid
- Haskell简介
- haskell笔记
- Haskell 入门
- 尝试haskell
- [Haskell] ex1
- Hi Haskell
- [Haskell] ex3
- 初识haskell
- Haskell教程
- haskell学习心得
- SICP HASKELL
- haskell(1)
- haskell(2)
- 错误16error C2011: “Bullet”:“class”类型重定义,如何解决
- 某互联网公司Java工程师的笔试题
- CvMat矩阵结构
- JSP Content-Type
- C_存储类(auto,extern,static,register)
- haskell(8)
- maven 打包的时候,不把class打包到war包的情况
- 软件开发反思-第一章、小故事大问题-1.6、大棚中生长的企业
- 黑马程序员_java基础day10
- 知识产权管理系统
- 裸机驱动之理解(*(volatile unsigned *)
- ibatis sql主键自动生成方式
- MyEclipse导入导出项目
- 业务流程