基本数据类型

在Haskell中,数据类型是构建程序的基础。理解基本数据类型是掌握Haskell编程的第一步。本教程将详细介绍Haskell中的基本数据类型,包括理论解释、代码示例和实践练习。

1. 整数类型 (Integer)

1.1 理论解释

Haskell中的整数类型用于表示整数值。整数类型包括有符号整数和无符号整数。Haskell提供了两种主要的整数类型:Int 和 Integer。

  • Int:有界的整数类型,通常在32位或64位系统上分别表示32位或64位的整数。
  • Integer:无界的整数类型,可以表示任意大小的整数。

1.2 代码示例

-- 使用 Int 类型
intExample :: Int
intExample = 42

-- 使用 Integer 类型
integerExample :: Integer
integerExample = 12345678901234567890

1.3 实践练习

编写一个Haskell程序,计算两个整数的和,并输出结果。

2. 浮点数类型 (Float, Double)

2.1 理论解释

浮点数类型用于表示实数。Haskell提供了两种浮点数类型:Float 和 Double。

  • Float:单精度浮点数。
  • Double:双精度浮点数,精度更高。

2.2 代码示例

-- 使用 Float 类型
floatExample :: Float
floatExample = 3.14

-- 使用 Double 类型
doubleExample :: Double
doubleExample = 2.718281828459045

2.3 实践练习

编写一个Haskell程序,计算两个浮点数的乘积,并输出结果。

3. 布尔类型 (Bool)

3.1 理论解释

布尔类型用于表示逻辑值,只有两个可能的值:True 和 False。

3.2 代码示例

-- 使用 Bool 类型
boolExample :: Bool
boolExample = True

3.3 实践练习

编写一个Haskell程序,判断一个整数是否为偶数,并输出布尔结果。

4. 字符类型 (Char)

4.1 理论解释

字符类型用于表示单个字符。字符用单引号括起来。

4.2 代码示例

-- 使用 Char 类型
charExample :: Char
charExample = 'A'

4.3 实践练习

编写一个Haskell程序,判断一个字符是否为大写字母,并输出布尔结果。

5. 字符串类型 (String)

5.1 理论解释

字符串类型实际上是字符列表的别名。字符串用双引号括起来。

5.2 代码示例

-- 使用 String 类型
stringExample :: String
stringExample = "Hello, Haskell!"

5.3 实践练习

编写一个Haskell程序,反转一个字符串,并输出结果。

6. 列表类型 (List)

6.1 理论解释

列表是Haskell中常用的数据结构,用于存储一组相同类型的元素。列表用方括号括起来,元素之间用逗号分隔。

6.2 代码示例

-- 使用 List 类型
listExample :: [Int]
listExample = [1, 2, 3, 4, 5]

6.3 实践练习

编写一个Haskell程序,计算一个整数列表的元素之和,并输出结果。

7. 元组类型 (Tuple)

7.1 理论解释

元组用于存储一组不同类型的元素。元组用圆括号括起来,元素之间用逗号分隔。

7.2 代码示例

-- 使用 Tuple 类型
tupleExample :: (Int, String, Bool)
tupleExample = (42, "Haskell", True)

7.3 实践练习

编写一个Haskell程序,交换元组中的两个元素,并输出结果。

8. 实践练习答案

8.1 整数类型练习答案

main :: IO ()
main = do
    let a = 10
        b = 20
    print (a + b)

8.2 浮点数类型练习答案

main :: IO ()
main = do
    let a = 3.14
        b = 2.718
    print (a * b)

8.3 布尔类型练习答案

isEven :: Int -> Bool
isEven n = n `mod` 2 == 0

main :: IO ()
main = do
    let n = 42
    print (isEven n)

8.4 字符类型练习答案

isUppercase :: Char -> Bool
isUppercase c = c `elem` ['A'..'Z']

main :: IO ()
main = do
    let c = 'A'
    print (isUppercase c)

8.5 字符串类型练习答案

reverseString :: String -> String
reverseString = reverse

main :: IO ()
main = do
    let s = "Haskell"
    print (reverseString s)

8.6 列表类型练习答案

sumList :: [Int] -> Int
sumList = sum

main :: IO ()
main = do
    let lst = [1, 2, 3, 4, 5]
    print (sumList lst)

8.7 元组类型练习答案

swapTuple :: (a, b) -> (b, a)
swapTuple (x, y) = (y, x)

main :: IO ()
main = do
    let t = (1, "Haskell")
    print (swapTuple t)

通过本教程,你应该已经掌握了Haskell中的基本数据类型。接下来,我们将继续学习Haskell的类型推导和多态类型。