2009-11-30 7 views
1

Je Comprehension l'erreur « Non portée: x » lorsque vous faites comme suit ...Haskell Liste

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]] 

cependant, si je retire la garde de 2: e ligne GHCi compile sans me donner aucune les erreurs.

Pouvez-vous m'aider à comprendre ce que je fais de mal?

Répondre

13

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

+6

Juste pour le mettre en évidence pour Mickel: ** barre verticale virgule **, pas ** **. Des barres verticales multiples sont utilisées pour la compréhension de listes parallèles, ce qui n'est pas ce que vous voulez (et nécessite d'ailleurs une extension de langue). – ephemient

+0

Merci les gars! – Mickel