如何有多个一次性参数

how to have multiple throwaway arguments

我知道像

这样的函数很常见
f _ [] = Nothing
f a (x:xs) = ...

在 Haskell 中,_ 是一次性参数名称似乎是惯用的。

如果我有很多我不关心的怎么办?例如

g _ _ [] _     = Nothing
g a _ (x:xs) b = ...

是我想写的,但我认为我不能在一个定义中有多个_

那么当我不在乎很多的时候怎么办?

你绝对可以在同一个函数中有多个下划线。由于它们未分配任何值,因此不会覆盖任何内容。

它也更易于阅读,因为您知道值是多少并不重要,您可以关注对结果有实际贡献的内容。此外,如果您在编译时启用所有警告,如果您不使用具有名称的参数,您实际上会收到错误消息:

g a b = b

将return一个Warning: Defined but not used: 'a'