需要对这个Haskell代码片段做一点澄清

时间:2014-08-07 14:49:06

标签: haskell

有人可以帮助我了解这段代码片段的含义。 来自: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;我无法理解这个结构是什么(我知道它在做什么,我在询问语法)

谢谢: - )

0 个答案:

没有答案