也许我误读了文档(
http://www.haskell.org/ghc/docs/7.0.1/html/users_guide/syntax-extns.html#parallel-list-comprehensions)但是在下面的代码中我希望列表推导zs和zs’具有相同的值.但是,它们是不同的,如主打印两条不同的线所示:
{-# LANGUAGE ParallelListComp, TransformListComp #-}
import GHC.Exts
xs = [10,20..90]
ys = map (`mod`7) xs
zs = [(x,y) | x<-xs | y<-ys, then sortWith by y]
zs' = [(x,y) | (x,y) <- zip xs ys, then sortWith by y]
main = print zs >> print zs'
我只是误读了文档,还是有一些更糟糕的问题?我很惊讶类型系统没有捕获实际代码中的错误.
生成此输出:
*Main> main
[(10,0),(20,1),(30,2),(40,3),(50,3),(60,4),(70,5),(80,6),(90,6)]
[(70,0),(50,1),(30,2),(10,3),(80,3),(60,4),(40,5),(20,6),(90,6)]
谢谢.
最佳答案 Dons,谢谢,现在我不确定我做了什么,做出了正确的输出.是的,我的评论中的代码是语法错误(我无法修复它或在那里评论,因为我没有浏览器cookie,叹息).我没有看到任何解决方法,除了“拉链”,这有点令人失望,但哦,好吧. (哦,看起来我可以将编辑放入队列,与mathoverflow不同).