可能重复:
Where does the name “xs” for pattern matching come from?
我正在学习Haskell。这是一个计算总和
的函数sum' :: (Num a) => [a] -> a
sum' [] = 0
sum' (x:xs) = x + sum' xs
我无法弄清xs
的意思。 x - 是头部,xs - 是尾部。但它写的是xs而不仅仅是x或s?
答案 0 :(得分:6)
x
和xs
只是变量名称;例如,您可以使用fred
和wilma
代替。但是调用列表x
的头部和尾部xs
(发音为exes)是很常见的,因为它会提示x
是单个元素,而{{{ 1}}可能包含多个元素。
您给出的示例使用模式匹配,这是一个漂亮的功能。这条线
xs
基本上是说“将输入参数取为sum”,并在第一个元素之后将其拆分。调用第一个元素 sum' (x:xs) = x + sum' xs
和列表的其余部分x
“。它基本上等同于:
xs