haskell中列表列表上的模式匹配

时间:2019-03-14 23:29:10

标签: haskell

我想要一个函数,该函数需要一个数字列表,并计算每个内部列表的最大值以返回一个数字列表。这是我的实现:

f :: [[Int]]->[Int]
f x:xs = (maximum x) : f xs 

这会导致解析错误:

h.hs:8:1: error: Parse error in pattern: f
  |
8 | f x:xs = (maximum x) : f xs

我的代码有什么问题?实现这种功能的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

在Haskell中,只有当方括号括起来时,才可以将构造函数运算符用作模式:

f :: [[Int]] -> [Int]
f (x:xs) = (maximum as) : f xs