リスト内の残りの要素を表現するために「xs」を使用できることは知っていますが、Haskellで「ls」が何を意味するのかまったくわかりませんか?
1098 次
4 に答える
11
ls
事前定義されたものではありません。のように、バインドするものは何でもですxs
。
たとえば、次のような例を見たことがあると思います。
sum [] = 0
sum (x:xs) = x + sum xs
xs
ここで定義したvariableは、 pattern により、リストの残りの部分にバインド(x:xs)
されます (値を持つことになります) 。しかし、これは次のように書くこともできます。
sum [] = 0
sum (l:ls) = l + sum ls
ただし、変数は数字(または、本当にめちゃくちゃなフォントのパイプ記号)l
と混同されやすいため、変数を呼び出さないことをお勧めします。1
|
次のように書くこともできます。
sum [] = 0
sum (head:tail) = head + sum tail
ここでは、組み込みのプレリュード関数head
およびの名前を再利用していますがtail
、これは混乱を招くに違いありません。
于 2012-04-29T12:02:50.483 に答える
5
リストのリストの特殊なケースのls
代わりに使用しています。xs
于 2012-04-29T12:35:39.260 に答える
5
リストを参照する変数に名前を付けるための haskell の経験則は、英語の通常の複数形と同様に、 -sを追加することです。したがって、x
要素のリストが ha ある場合は、名前を付けますxs
。がある場合l
、のリストはl
になります ls
。
于 2012-04-29T11:57:36.500 に答える
2
それはまったく同じことです。xs という名前に特別なことは何もありません。リストの先頭と末尾にそれぞれ x と xs、a と as、l と ls などの名前を付けるのは慣習です。
于 2012-04-29T11:57:50.920 に答える