2009-11-30 84 views
1

我得到的错误“不在范围:X”的时候做然而,如下...哈斯克尔列表综合

blanks :: Sudoku -> [Pos] 
blanks (Sudoku su) = [ fst x | x <- posSud | isBlank (snd x) ] 
    where 
     isBlank Nothing = True 
     isBlank _  = False 
     posSud   = zip ixPos (concat su) 
     ixPos   = zip ixRows ixCols 
     ixCols   = concat (replicate 9 [0..8]) 
     ixRows   = [floor (x/9) | x <- [0..81]] 

如果我删除了2后卫:第二线GHCI编译没有给我任何错误。

你能帮我理解我做错了什么吗?

回答

13

尝试[ fst x | x <- posSud , isBlank (snd x) ]

+6

只是为了突出它的米克尔:**逗号**,​​而不是**竖条**。多个竖线用于并列表理解,这不是你想要的(并且需要另外的语言扩展)。 – ephemient 2009-11-30 23:07:55

+0

谢谢你们! – Mickel 2009-12-01 06:37:05