2009-11-30 116 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