本节书摘来自异步社区《Haskell趣学指南》一书中的第2章,第2.2节Haskell的常见类型,作者 【斯洛文尼亚】Miran Lipovaca,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.2 Haskell的常见类型
接下来我们看几个Haskell中常见的基本类型,比如用于表示数、字符、布尔值的类型。
Int意为整数。7可以是Int,但7.2不可以。Int是有界的(bounded),它的值一定界于最小值与最大值之间。
注意:
我们使用的 GHC 编译器规定 Int 的界限与机器相关。如果你的机器采用64位CPU,那么Int 的最小值一般为−263,最大值为263−1。
Integer也是用来表示整数的,但它是无界的。这就意味着可以用它存放非常非常大的数(真的非常非常大!),不过它的效率不如Int高。拿下面的函数作为例子,可以将下面的函数保存到一个文件中:
factorial :: Integer -> Integer
factorial n = product [1..n]
然后通过:l将它装载入GHCi并进行测试:
ghci> factorial 50
30414093201713378043612608166064768844377641568960512000000000000
Float表示单精度浮点数。将下面的函数加入刚才的文件:
circumference :: Float -> Float
circumference r = 2 * pi * r
随后装载并测试:
ghci> circumference 4.0
25.132742
Double表示双精度浮点数。双精度的数值类型中的位是一般的数值类型的两倍,这些多出来的位使它的精度更高,同时也占据更大的内存空间。继续将下面的这个函数加入文件:
circumference' :: Double -> Double
circumference' r = 2 * pi * r
装载并测试。可以特别留意circumference与circumference'两者在精度上的差异。
`
ghci> circumference' 4.0
25.132741228718345
Bool表示布尔值,它只有两种值,即True和False。
Char表示一个Unicode字符。一个字符由单引号括起,一组字符的列表即字符串。