Haskell学习(1)

这学期选了一门很变态的课,看上去似乎及其简单,学期的头几周也过得十分愉快,但是到了后面出现了Functional Programming 和 Logical Programing,生活就开始暗淡无光了。于是决定好好从头开始,再把这两套语言粗略的学习一遍。首先从FP开始,主要的总结内容都是摘自Real World Haskell这本书。的确是一本好书,可以再http://book.realworldhaskell.org/read/看到所有的文字,不过是英文。

 

1. Haskell的开发环境:

Haskell有众多的实现,但是目前来看最为出名的还是Glasgow Haskell Compiler(GHC),基本上大部分的开发都是基于它的。目前的版本最新为6.10.8,而RWH这本书的版本是6.8。还有另外一个版本可以给 出,就是Hugs,多用于大学的教学。

GHC包括三个部分:
1) ghc:生成快速本地代码的优化编译器
2) ghci:交互解释器和调试器
3) runghc:不需要首先编译的Haskell运行程序

 

2. 开始ghci

当运行ghci的时候,可以得到一个Prelude>的提示符。Prelude是一个标准的Haskell库,提供了许多函数可以直接使用。

可以直接使用ghci当作计算器,输入2+2,命令行将会直接返回4,以此类推。此外对于ghci,简单的数学操作可以视为函数运行,因此2+2 也可以写为+ 2 2(Haskell的参数用空格隔开,不需要括号)。但是有一点需要注意的,就是如果在加号中有负数出现,负数最好用括号括起来,不然2+-1就会报错。

Boolean值为True和False,开始的第一个字母大写。&&和||与C语言中一致,并且在Haskell中,没有0就是False,正整数为True的说法。

比较符号,==,>=,<=和C都一样,不同的是不等于写作/=,非写作not。

操作符也是由优先级别的,可以使用:info operator命令来查看操作符的使用方法,优先级别以及是左关联还是右关联。

 

3. List

List是用[]括起来的一组元素,可以为空[],但是必须元素拥有一样的类型,比如[True, False, "abc"]就会报错。
[1..10]表示从1到10的一个列举,即[1,2,3,4,5,6,7,8,9,10]。如果不指定上界,程序将会不断运行打印知道终止程序位置 (Ctrl+C)。同时,列举是依照前两个数据的规律来判断打印的结果的,比如[1,3..10]得到的将会是[1,3,5,7,9]。

对于List的连接操作有两种,++将两个List相连,比如[1,2,3]++[4,5]得到[1,2,3,4,5]。:将一个元素和一个List相连,比如1:[2,3,4]得到[1,2,3,4]。

String字符串被视为List,其元素是一个个的Char。因此String和Char也可以使用以上的两个函数操作。

 

4. 几个操作符:

1) 当当前提示符过长的时候,可以使用:set prompt将提示符改换为自定义类型。
2) :module + 会装载模块,如:module + Data.Ratio。:m是:module的缩略形式。
3) 当Prelude中没有定义的数据时,可以临时定义,如let e = exp 1,得到e的值,并且后面可以使用e。
4) putStrLn就是打印的作用,类似于Print。
5) :set +t使每次运行都会显示类型信息,:unset +t则取消。:type则会返回参数的类型信息。
6) 可以使用it得到上次运算结果,如果上次运行失败,则it的值不会发生改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值