2012-04-29 168 views
3

我知道「xs」可以用來表示列表中其餘元素 ,但我完全不知道「ls」在Haskell中的含義是什麼?「ls」在Haskell中的含義是什麼?

+0

如果你正在解構一個列表'(h :: ls)',那麼它意味着同樣的事情。 's'後綴只是命名列表尾部的常用約定。 – Lee 2012-04-29 11:57:52

+1

@李:在Haskell它是'(h:ls)'。 '::'是ML,O'Caml等的缺點 – amindfv 2012-04-29 12:04:07

+1

「ls」在Haskell中沒有內在含義。 – 2012-04-29 23:36:54

回答

9

ls不是預定義的東西。無論你如何綁定它,就像xs

舉例來說,我想你已經看到的例子是這樣的:

sum [] = 0 
sum (x:xs) = x + sum xs 

變量xs,你就在這裏定義,得到勢必(會有的值)列表的其餘部分因爲模式(x:xs)。但是,這同樣可以被寫爲:

sum [] = 0 
sum (l:ls) = l + sum ls 

我們不喜歡叫可變l雖然,因爲它是與數字1(甚至管上真的搞砸了字體符號|)容易混淆。

我們甚至可以這樣寫:

sum [] = 0 
sum (head:tail) = head + sum tail 

,我們重用的內置功能,前奏和headtail名稱,但這樣勢必會導致混亂。

5

用於命名列表變量的haskell中的經驗法則是添加一個-s,就像在英語中使用常規復數一樣。所以如果你有一個名單x元素,你的名字是xs。如果您有l,則l的列表將爲ls

2

這是完全一樣的東西。關於名稱xs沒有什麼特別的;它只是約定來分別命名列表x和xs,a和as,l和ls等的頭部和尾部。

5

我使用ls而不是xs作爲l ists的特例。

+4

我使用'xss'作爲:) – 2012-04-29 19:09:21

+1

@benmachine:也許我已經做了太多的web工作,但是我不能在不考慮跨站腳本的情況下查看'xss':P。 – 2012-05-01 00:08:23