暑期小学期选了一门Haskell函数式程序设计的课,是由一位德国多特蒙德的大学教授来上课。
由于没有中文版的Haskell的译著,也没有中文的关于Haskell的著作,我主要参考了影印版的《Real World Haskell》(真实世界的Haskell)。
这个课已经上了三次,对Haskell有了初步的了解,下面主要总结一下已经学习的一些Haskell语言的内容。
编译环境:
使用ghci进行编译。对于Windows用户,可以在WinGHCI中进行编译。
下载地址:http://hackage.haskell.org/platform/
List和Tuple
Haskell中很重要的两种结构是List和Tuple,List中要求各元素的类型相同,但长度可以改变,Tuple中的元素类型可以不同,但长度不能改变。有了这两种结构,使用Haskell语言就非常方便了。let r=(1,'a')
:type r
:type it
:type r表示查询r的类型,这个可以用it进行代替。
fst和snd是对于pair而言的,fst r ,snd r分别是取出pair中的第一个元素和第二个元素。
例如:
fst(1,'a')==1
snd(1,'a')=='a'
自定义一种新的数据类型:
在Haskell source file(后缀名为.hs的文件)中,使用data关键字。
例如:
--file:BookStore.hs data BookInfo = Book Int String [String] deriving(Show) myInfo=Book 9780135072455 "Algebra of Programming" ["Richard Bird","Oege de Moor"]
在ghci中,使用:info命令,可以获取关于类型的全部信息。