天天看点

《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的用户可以直接使用打开按钮来打开程序文件。

:reload:简写为:r,用来重新导入当前的源代码文件。通常,在保存了源文件后,ghci不会自动重新导入修改后的文件,用户可以很方便地使用:r来重新导入。winghci的用户可以使用刷新按钮来重新导入程序文件。

:cd:改变当前ghci的路径。这样做就不用每一次都输入绝对路径来导入文件了。例如:

<code>prelude&gt;:cd c:\users\user\desktop</code>

:module:导入一个库,简写为:m。使用:m +与:m – 来增加与移除不同的模块。在后面会具体介绍如何使用这个命令。

:quit:退出ghci。

:?:可以让ghci输出帮助信息。

当然,ghci的命令还有很多,本书将在后面的章节再做介绍。这里约定:若没有特别说明,则ghci指的就是winghci,而不是命令行的下的ghci。

1.3.2 在ghci中调用函数

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

除了逻辑与运算&amp;&amp;外,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作为函数或者变量的名称。

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

继续阅读