4

我知道“xs”可用于表示列表中的其余元素,但我完全不知道“ls”在 Haskell 中是什么意思?

4

4 回答 4

11

ls不是预定义的东西。它是你绑定到的任何东西,就像xs.

例如,我想你已经看过这样的例子:

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

xs由于 pattern ,您刚刚在此处定义的变量会被绑定(将具有值)列表的其余部分(x:xs)。但这同样可以写成:

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

不过,我们不想调用变量l,因为它很容易与数字混淆1(甚至是|真正混乱字体上的管道符号)。

我们甚至可以写:

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

我们重用了内置前奏函数的名称headtail,但这势必会导致混淆。

于 2012-04-29T12:02:50.483 回答
5

在 haskell 中命名引用列表的变量的经验法则是添加-s,就像英语中的常规复数一样。因此,如果您有 hax元素列表,请命名它xs。如果你有一个l,列表l将是 ls

于 2012-04-29T11:57:36.500 回答
5

我使用ls而不是列表列表xs的特殊情况。

于 2012-04-29T12:35:39.260 回答
2

这是完全相同的事情。xs 这个名字没有什么特别之处;将列表的头部和尾部分别命名为 x 和 xs、a 和 as、l 和 ls 等只是惯例。

于 2012-04-29T11:57:50.920 回答