《Haskell函数式编程入门》—— 第1章,第1.3节GHCi的使用

本节书摘来自异步社区《Haskell函数式编程入门》一书中的第1章,第1.3节GHCi的使用,作者 张淞,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.3 GHCi的使用
GHCi是一个对函数进行测试与调式的工具,可以导入Haskell源代码文件,然后调用其中的函数、查看函数的信息等。本节先学习如何使用GHCi中的命令来对文件和库进行导入等,再来了解如何在GHCi中调用函数。

启动GHCi后可以看到GHCi的版本,还有导入的库等,可以不用管它们,最后一行会有一个Prelude>提示符,其中Prelude指的是GHCi在运行时一个默认的初始环境。它是一个定义了很多类型与函数的库。启动GHCi后,用户可以不做任何设置而直接使用其中定义的内容。下面来看一下GHCi中的一些命令。

1.3.1 GHCi中的命令
下面介绍一些常用的GHCi命令,学习如何导入代码文件和库模块,以及如何改变GHCi的当前路径等。
:load:简写为:l,用来导入当前路径或者指定路径下的文件,但在Windows下要注意使用转义的反斜杠。比如,导入作者桌面上HelloWrold文件夹下的HelloWorld.hs,WinGHCi的用户可以直接使用打开按钮来打开程序文件。

 Prelude>:l  "C:\\Users\\User\\Desktop\\HelloWorld\\HelloWorld.hs"

:reload:简写为:r,用来重新导入当前的源代码文件。通常,在保存了源文件后,GHCi不会自动重新导入修改后的文件,用户可以很方便地使用:r来重新导入。WinGHCi的用户可以使用刷新按钮来重新导入程序文件。
:cd:改变当前GHCi的路径。这样做就不用每一次都输入绝对路径来导入文件了。例如:
Prelude>:cd C:\Users\User\Desktop
:edit:用默认的文本编辑器编辑当前导入的文件。如果使用GHCi,它会读取系统环境变量中的EDITOR,启动相应的编辑器。如果读者使用的是Hugs,则需要设置HUGSFLAG环境变量来使得Hugs可以启动对应的文本编辑器。更多信息可以参阅Hugs用户手册3.1节,可以浏览http://cvs.haskell.org/Hugs/pages/users-guide/
:module:导入一个库,简写为:m。使用:m +与:m – 来增加与移除不同的模块。在后面会具体介绍如何使用这个命令。
:quit:退出GHCi。
:?:可以让GHCi输出帮助信息。
当然,GHCi的命令还有很多,本书将在后面的章节再做介绍。这里约定:若没有特别说明,则GHCi指的就是WinGHCi,而不是命令行的下的GHCi。

1.3.2 在GHCi中调用函数
很多数值比如整数、小数还有一些四则运算的函数都已经在上节中提过的Prelude初始环境中定义好了,所以可以直接使用。由于在Prelude中定义了各种数学运算符号,因此GHCi可以当做一个计算器来使用。比如:

>4+6*7/3
18.0
此外还有自然对数函数、三角函数及圆周率π等。

> log 2.71828
0.999999327347282

> sin (pi/3) / cos (pi/3)
1.7320508075688767

> tan (pi/3)
1.7320508075688767

除数字的类型以外,Prelude中还定义了布尔类型,这种类型只有True与False两个值,表示真与假。Prelude中也定义了基于布尔值的运算符,读者可以直接用&&运算符号对布尔值做逻辑与运算。例如:

> True && False
False

除了逻辑与运算&&外,Prelude中还提供了逻辑或运算符||,用户可以在GHCi中测试这个函数。

Prelude中还提供非常实用的容器—列表。有了它就可以很灵活地对值进行存储和使用相关的函数。[1..4]表示遍历整数1~4,即[1,2,3,4]。

[1..4]
[1,2,3,4]

sum是一个可以对列表中的数值进行求和的函数。也就是说,给定一个列表sum,会求得该列表中所有元素的和。比如:

sum [1..4]

10
Prelude中的product函数可以求得一个列表的所有元素的乘积,读者可以在GHCi中计算[1..4]的乘积。

如果想引用之前调用的函数所计算的结果,可以使用it。比如,计算了1~4之间的整数之和后想再加100可以写为:

it + 100

110
因为it在GHCi中可以指代前一次函数计算的结果,所以在定义函数还有测试时不要使用it作为函数或者变量的名称。

最后,约定如下:如果书中只用>符号,然后调用函数或者输入GHCi命令,则表示在GHCi的提示符中的操作,而C:>则是系统命令行的提示符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值