2012-04-29 19 views
3

"xs"は残りの要素をリストに表現するのに使うことができます。 しかし、私はHaskellの "ls"の意味を全く知らないのですか?ハスケルで "ls"とは何を意味していますか?

+0

リスト '(h :: ls)'を破壊する場合は、同じことを意味します。 's'サフィックスは、リストの末尾に名前を付けるための一般的な規則です。 – Lee

+1

@Lee:ハスケルでは '(h:ls)'です。 '::'はML、O'Camlなどではコンスです。 – amindfv

+1

"ls"はHaskellの本質的な意味を持ちません。 –

答えて

9

lsはあらかじめ定義されたものではありません。 xsのように、バインドしても構いません。リストの残り(の値を持つことになります)をバインド取得、あなたはちょうどここに定義されていること

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

変数xs、:

例えば、私はあなたがこのような例を見てきましたと思いますパターン(x:xs)のためです。それは数字1(または本当にめちゃめちゃフォントでも、パイプ記号|)で簡単に混乱しているので、私たちは、しかし、変数lを呼び出すことがないことを好む

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

:しかし、これは同様に良好のように記述されている可能性があります。私たちも、書くことができ

:我々は組み込みのプレリュード機能headtailの名前を再利用するが、これは混乱を招くためにバインドされている

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

5

リストを参照する変数を命名するためのhaskellの経験則は、通常の複数形の場合と同様に、-sを追加することです。したがって、x要素のリストがある場合は、xsという名前になります。 lがある場合、lのリストはlsになります。

2

これはまったく同じことです。名前には特別なものは何もありません。リストxとxs、aとas、lとlsなどの先頭と末尾にそれぞれ名前を付けるだけです。

5

私は、lのリストの特殊なケースの場合、xsの代わりにlsを使用しています。

+4

私はそれに 'xss'を使用しています:) –

+1

@benmachine:たぶん私はあまりにも多くのWebをやったことがありますが、クロスサイトスクリプティングを考えずに' xss'を見ることはできません。 –