欢迎访问宙启技术站
智能推送

在Haskell中,如何定义一个多态函数来计算列表的长度

发布时间:2023-12-10 01:14:20

在Haskell中,我们可以使用递归来定义一个多态函数来计算列表的长度。以下是一个示例:

-- 定义一个多态函数,用于计算列表的长度
len :: [a] -> Int
len [] = 0         -- 空列表的长度为0
len (x:xs) = 1 + len xs   -- 非空列表的长度为头部元素加上剩余元素列表的长度

-- 使用例子
main :: IO ()
main = do
  let list1 = [1, 2, 3, 4, 5]
      list2 = ['a', 'b', 'c', 'd']
      list3 = ["apple", "banana", "cherry"]

  putStrLn $ "List 1 length: " ++ show (len list1)
  putStrLn $ "List 2 length: " ++ show (len list2)
  putStrLn $ "List 3 length: " ++ show (len list3)

在上面的例子中,我们首先定义了一个多态函数len,它接受一个类型为[a]的列表作为参数,并返回一个Int类型的结果。函数len使用模式匹配来处理两种情况:空列表和非空列表。

对于空列表,我们将其长度定义为0。对于非空列表,我们使用递归的方式将其长度定义为头部元素加上剩余元素列表的长度。

main函数中,我们定义了三个不同类型的列表list1list2list3,并调用len函数来计算它们的长度。最后,我们使用putStrLn函数来打印出结果。

运行上述代码,将会输出:

List 1 length: 5
List 2 length: 4
List 3 length: 3

这表明函数len正确地计算了每个列表的长度。