- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第⼆章 ⼊门
各就各位,预备 !
启蒙:你的第⼀个函数
List⼊门
德州区间
我是List Comprehension
Tuple
各就各位,预备!
好的,出发 !如果你就是那 从不看说明书的不良⼈⼠,我推荐你还是回头看⼀下简
介的最后⼀节。那⾥⾯讲了这个教程中你需要⽤到的⼯具及基本⽤法。我们⾸先要做
的就是进⼊ghc的交互模式,接着就可以调⼏个函数⼩体验⼀把haskell 了。打开控制
台,输⼊ghci ,你会看到如下欢迎信息
GHCi, version 6.8.2: http://www ./ghc/
:? for help Loading package ase ... linking ... done.
Prelude
恭喜,您已经进⼊了ghci !⽬前它的命令⾏提⽰是prelude,不过它在你装载什么
东西后会变的⽐较长。免得碍眼,我们输⼊个:set prompt ghci 把它改
成ghci。
如下是⼀些简单的运算
ghci 2 + 15 17
ghci 49 * 100 4900
ghci 1892 - 1472 420
ghci 5 / 2 2.5
ghci
很简单。也可以在⼀⾏中使⽤多个运算符,按照运算符优先级执⾏计算,使⽤括号可
以更改优先级次序。
ghci (50 * 100) - 4999
1
ghci 50 * 100 - 4999
1
ghci 50 * (100 - 4999)
-244950
很酷么?嗯,我承认不。处理负数时会有个⼩陷阱:执⾏5 * -3会使ghci报错。所以
说,使⽤负数时最好将其置于括号之中,像5*(-3)就不会有问题。
逻辑运算也同样直⽩,你也许知道,指逻辑与,||指逻辑或,not指逻辑否。
ghci True False
False
ghci True True
True
ghci False || True
True
ghci not False
True
ghci not (True True)
False
相等性可以这样判定
ghci 5 == 5
True
ghci 1 == 0
False
ghci 5 /= 5
False
ghci 5 /= 4
True
ghci hello == hello
True
执⾏5+llama或者5==True会怎样?好的,⼀个⼤⼤的报错等着你。
No instance for (Num [Char])
arising from a use of `+ at :1:0-9
Possi le fix : add an instance declaration for (Num [Char])
In the expression: 5 + llama
In the definition of `it: it = 5 + llama
Yikes !ghci 提⽰说llama并不是数值类型,所以它不知道该怎样才能给它加上5 。即
便是“four”甚⾄是“ ”也不可以,haskel不拿它当数值。执⾏True==5, ghci就会提⽰类型
不匹配。+运算符要求两端都是数值,⽽==运算符仅对两个可⽐较的值可⽤。这就要
求他们的类型都必须⼀致,苹果和橙⼦就⽆法做⽐较。我们会在后⾯深⼊地理解类型
的概念。Note:5+4 .0是可以执⾏的,5既可以做被看做整数也可以被看做浮点数,但
.0则不能被看做整数。
也许你并未察觉,不过从始⾄终我们⼀直都在使⽤函数。*就是⼀个将两个数相乘的
函数,就像三明治⼀样,⽤两个参数将它夹在中央,这被称作中缀函数。⽽其他⼤多
数不能与数夹在⼀起的函数则被称作前缀函数。绝⼤部分函数都是前缀函数,在接下
来我们就不多做甄别。⼤多数命令式编程语⾔中的函数调⽤形式通常就是函数名,括
号,由逗号分隔的参数表。⽽在haskell 中,函数调⽤的形式是函数名,空格,空格分
隔的参数表。简单据个例⼦,我们调⽤haskell 中最⽆聊的函数:
ghci succ 8
9
succ函数返回⼀个数的后继 (successor , 在这⾥就是8后⾯那个数,也就是9 。译者
注)。如你所见,
原创力文档


文档评论(0)