如何有多个一次性参数

the*_*sti 1 haskell idiomatic

我知道通常有这样的功能

f _ [] = Nothing
f a (x:xs) = ...
Run Code Online (Sandbox Code Playgroud)

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

如果我有很多我不在乎的怎么办?例如

g _ _ [] _     = Nothing
g a _ (x:xs) b = ...
Run Code Online (Sandbox Code Playgroud)

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

那么,当我不关心其中的很多时该怎么办?

Lor*_*nzo 11

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

它也更容易阅读,因为您知道值是什么并不重要,并且您可以注意对结果有实际贡献的内容。另外,如果在编译时启用了所有警告,则如果不使用具有名称的参数,则实际上会得到错误:

g a b = b
Run Code Online (Sandbox Code Playgroud)

将返回一个 Warning: Defined but not used: 'a'

  • 我只是补充说,如果您以下划线开头的参数命名为_a,则可以避免最后一次警告。 (3认同)
  • 哦,我不知道这实际上是一种语言功能 (2认同)
  • @theonlygusti是的,关于_的要点是,它是模式匹配中的通配符 (2认同)