我知道“xs”可用于表示列表中的其余元素,但我完全不知道“ls”在 Haskell 中是什么意思?
问问题
1098 次
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
我们重用了内置前奏函数的名称head
和tail
,但这势必会导致混淆。
于 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 回答