我知道“xs”可用于表达列表中的其余元素 但我完全不知道Haskell中“ls”的含义是什么?
答案 0 :(得分:10)
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
我们重复使用内置前奏函数head
和tail
的名称,但这必然会导致混淆。
答案 1 :(得分:5)
haskell中用于命名引用列表的变量的经验法则是添加 -s ,就像英语中的常规复数一样。因此,如果您有x
元素列表,请将其命名为xs
。如果您有l
,则l
的列表将为ls
。
答案 2 :(得分:5)
我正在使用ls
代替xs
来处理 l 等列表的特殊情况。
答案 3 :(得分:2)
这是完全相同的事情。名字xs没有什么特别之处;按惯例分别命名列表x和xs,a和as,l和ls等的头部和尾部。