有人可以帮助我了解这段代码片段的含义。 来自:http://www.haskell.org/haskellwiki/Prime_numbers#Postponed
primesPE1 = 2 : sieve [3..] primesPE1
where
sieve xs (p:ps) | q <- p*p , (h,t) <- span (< q) xs =
h ++ sieve (t `minus` [q, q+p..]) ps
-- h ++ turner [x|x<-t, rem x p /= 0] ps
我的问题主要是关于这一行:
sieve xs (p:ps) | q <- p*p , (h,t) <- span (< q) xs = ...
那是什么
| q <- p*p , (h,t) <- span (< q) xs =
究竟意味着什么?当然,这不是一个警卫......它不能成为一种功能......&amp;我无法理解这个结构是什么(我知道它在做什么,我在询问语法)
谢谢: - )