什么做@和!意思?

Ant*_*ony 4 haskell symbols pattern-matching

 suffixes :: [a] -> [[a]]
 suffixes xs@(_:xs') = xs : suffixes xs'
 suffixes _          = []
Run Code Online (Sandbox Code Playgroud)

我只知道@这里叫做"AsPattern".但它在这里如何运作呢?有人能给我一个分析吗?

怎么样!在哈斯克尔工作.我现在不能举一个例子.但我很确定它确实发生在haskell编程中.

bwr*_*oga 8

@符号允许您进行模式匹配并引用与模式匹配的整个值.在您的示例中,您可以将整个列表参数称为xs(使用@符号),将列表尾部称为xs'(使用模式匹配).

的!符号可用于强制严格评估值而不是懒惰(使用爆炸模式或严格注释).

  • `!`也用于严格注释,它与爆炸模式不同. (2认同)