Haskell系列(二)启动函数部分

566 阅读2分钟

(二)启动函数部分

返回类型

首先补充一个有用的命令,叫做:t。该命令的作用是返回输入内容的类型。

ghci> :t 1
1 :: Num p => p
ghci> :t 0.1
0.1 :: Fractional p => p
ghci> :t 'a'
'a' :: Char
ghci> :t "s"
"s" :: [Char]
ghci> let a = ['a', 'a', 'a']
ghci> :t 'a'
'a' :: Char
ghci> let a = [1, 2, 3]
ghci> :t 'a'
'a' :: Char
ghci> let a = 1
ghci> :t 'a'
'a' :: Char
ghci> let a = 1.0
ghci> :t 'a'
'a' :: Char

开始写函数啦

在写函数之前,我觉得Haskell用法就是个简单的计算器,直到我知道有一种文件类型叫做hs文件。这个时候Haskell系列(一)初识Haskell中如何退出就派上用处了。先退出ghci,移动到想要的文件夹,新建或者已经存在至少一个后缀名为.hs的文件。

然后我们可以重新进入ghci啦。假设我们已经新建了一个叫做example.hs的文件,输入:l example.hs,得到下面的结果。

ghci> :l example.hs
[1 of 1] Compiling Main             ( example.hs, interpreted )
Ok, one module loaded.

我们在hs文件中写一个简单的2倍函数:

doubled x = 2*x

然后在命令行里输入doubled 100,得到一个返回值200. 为了直观,我在VSCode里打开终端同时展示代码和命令行。

函数1.png 也可以有很多个变量,具体写法如下:

doubleTwo x y = 2*(x+y)

运行结果也展示一下。

函数2.png Haskell 中的函数并没有顺序,所以先声明 doubled 还是先声明 doubleTwo 都是同样的。

*Main> doubled (doubleTwo 100 100)
800

不过一定要加括号哦。

函数3.png

我们再写一个关于if...else...的函数:

double x = if x > 0 then doubled x 
else x

得到结果如图:

函数4.png

函数部分就结束啦,唯一要注意的是,函数名称的首字母不能大写。