他们具体做什么?我知道“@”的一个可能用途是在模式匹配开始时分配名称,但我没有找到任何关于“~”的东西。
我在以下代码片段中找到了它们,取自http://www.haskell.org/haskellwiki/Prime_numbers,但该文章假设您熟练掌握Haskell语法,并且不费心解释其神秘的运算符(我困惑的部分是sieve声明的开头):
primesPT () = 2 : primes'
where
primes' = sieve [3,5..] primes' 9
sieve (p:xs) ps@ ~(_:t) q
| p < q = p : sieve xs ps q
| True = sieve [x | x<-xs, rem x p /= 0] t (head t^2)
如果有任何关于这里使用的语法的解释(或链接)将不胜感激。