尾巴可能重複:
Where does the name 「xs」 for pattern matching come from?代表在Haskell
我學習Haskell。這裏是計算總和的函數
sum' :: (Num a) => [a] -> a
sum' [] = 0
sum' (x:xs) = x + sum' xs
我想不通xs
的意思。 x - 是頭部,xs - 是尾部。但是它寫的是xs而不是隻是x或s?
尾巴可能重複:
Where does the name 「xs」 for pattern matching come from?代表在Haskell
我學習Haskell。這裏是計算總和的函數
sum' :: (Num a) => [a] -> a
sum' [] = 0
sum' (x:xs) = x + sum' xs
我想不通xs
的意思。 x - 是頭部,xs - 是尾部。但是它寫的是xs而不是隻是x或s?
x
和xs
只是變量名;例如,您可以使用fred
和wilma
。但是,將名單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
我很困惑,因爲我認爲由於某些原因,xs有2個變量。 –
'xs'是一個單一的變量,但它是一個元素列表,而'x'只是一個元素。給你一個具體的例子,如果'(x:xs)'是'「hello」',那麼'x'是''h'','xs'是'「ello」'。 – mhwombat
見http://stackoverflow.com/questions/13701099/where-does-the-name-xs-for-pattern-matching-come-from – shang
我不是詢問爲什麼稱爲xs(而不是ca或xw或bq)。我在詢問究竟是什麼意思,或者它是如何工作的?我想應該只有一個字符。 –
這只是一個變量名稱。它可以是命名規則允許的任何事情。你可以閱讀關於一般模式匹配的語法,例如:http://learnyouahaskell.com/syntax-in-functions#pattern-matching – shang