Haskell中的列表模式匹配

3
我知道我们可以在 Haskell 中使用以下模式匹配:
```haskell ```
sum :: (Num a) => [a] -> a  
sum [] = 0  
sum (x:xs) = x + sum xs 

But why can’t we use [x] ++ xs?

sum :: (Num a) => [a] -> a  
sum [] = 0  
sum ([x] ++ xs) = x + sum xs
1个回答

5

您可以使用构造函数和字面量进行模式匹配,但不能使用函数。


1
:是一个构造函数吗? - 4castle
1
@4castle 是的。[1,2,3,4] 基本上只是 1:2:3:4:[] 的简写形式。 - Julia Path
2
实际上,在一般情况下,使用函数进行模式匹配是没有意义的:(\(x++y) -> y++x) "abcde"会得出什么结果? - chi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接