-2

可能重复:
模式匹配的名称“xs”从何而来?

我正在学习 Haskell。这是一个计算总和的函数

sum' :: (Num a) => [a] -> a  
sum' [] = 0  
sum' (x:xs) = x + sum' xs  

我想不通这是什么xs意思。x - 是头部,xs - 是尾部。但它是写成 xs 而不仅仅是 x 或 s 吗?

4

1 回答 1

6

x并且xs只是变量名;例如,您可以使用fredandwilma代替。但是调用列表的头部x和尾部xs(发音为 exes)是很常见的,因为它给你的提示x是单个元素,而xs可能包含多个元素。

您给出的示例使用模式匹配,这是一个很好的功能。线

 sum' (x:xs) = x + sum' xs  

基本上说“将输入参数求和”,并在第一个元素之后将其拆分。调用第一个元素x和列表的其余部分xs“。它基本上等同于:

 sum' list = x + sum' xs
     where x = head list
           xs = tail list
于 2013-01-04T11:31:40.597 回答