他们具体是做什么的?我知道 @ 的一种可能用法(在模式匹配开始时分配名称),但在 ~.
我在以下代码片段中找到了它们,取自http://www.haskell.org/haskellwiki/Prime_numbers,但本文假设您精通 Haskell 语法并且不费心解释其深奥的运算符(我的部分'm 困惑的是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)
任何关于此处使用的语法的解释(或链接)将不胜感激。