Ich stolperte über diesen Thread Haskell List Comprehension Und ich versuche jetzt, eine Requisite dafür zu schreiben, die besagt, dass alle Zellen in dieser Funktion eigentlich leer sind, aber nur haben Habe dies soweit mit folgender Fehlermeldung bekommen, als ich versucht habe es zu kompilieren.Brauchen Sie Hilfe Schreiben Prop zu Blak :: Sudoku → [Pos] (Haskell)
{-
Property that states that all cells in the blanks list are actually blank
-}
prop_blank_pos :: Sudoku → Bool
prop_blank_pos sud = (rows sud) !! (fst pair) !! (snd pair) ≡ Nothing
where pair = blanks sud
could't Spiel erwarteten Typ '(a, b)' gegen abgeleiteten Typ '[pos]' im ersten Argument 'fst'‘namley Paar und das zweite von '(!!)' namley fst Paar im ersten Argument von '(Zeilen) Bankey (' Reihen sud)‘
bearbeiten
Meine Frage ist, ist die Liste, die ich aus Rohlingen erhalten eine Liste [Pos], die [(Nothing, Nothing), (Nichts, Nichts) ... etc].
Ich möchte überprüfen, dass alle Tupel beide Elemente tatsächlich "Nichts" sind, d. H. Alle Elemente in der [Pos] sind (Nichts, nichts). Wie kann ich das überprüfen? Kann jemand ein Codebeispiel schreiben? Ich bin nicht gut in der Haskell-Syntax.
Edit 2
Hier ein Beispiel für eine soduku ist
example :: Sudoku
example =
Sudoku
[ [Just 3, Just 6, Nothing,Nothing,Just 7, Just 1, Just 2, Nothing,Nothing]
, [Nothing,Just 5, Nothing,Nothing,Nothing,Nothing,Just 1, Just 8, Nothing]
, [Nothing,Nothing,Just 9, Just 2, Nothing,Just 4, Just 7, Nothing,Nothing]
, [Nothing,Nothing,Nothing,Nothing,Just 1, Just 3, Nothing,Just 2, Just 8]
, [Just 4, Nothing,Nothing,Just 5, Nothing,Just 2, Nothing,Nothing,Just 9]
, [Just 2, Just 7, Nothing,Just 4, Just 6, Nothing,Nothing,Nothing,Nothing]
, [Nothing,Nothing,Just 5, Just 3, Nothing,Just 8, Just 9, Nothing,Nothing]
, [Nothing,Just 8, Just 3, Nothing,Nothing,Nothing,Nothing,Just 6, Nothing]
, [Nothing,Nothing,Just 7, Just 6, Just 9, Nothing,Nothing,Just 4, Just 3]
]
bearbeiten 3 Hier ist, wie Sudoku definiert ist
data Sudoku = Sudoku { rows :: [[Maybe Int]] }
deriving (Show, Eq)
Möglicherweise ist 'Paar' eine Liste von Tupeln. Johan müsste dann 'all' verwenden, um die Bedingung für alle Elemente der Liste zu überprüfen. – dave4420
Wenn ich das mache, wie Liszt vorschlägt, erhalte ich die folgende Fehlermeldung: Konnte nicht mit dem erwarteten Typ übereinstimmen '[(Vielleicht a, Vielleicht a1)]' Abgeleitete Art [Pos] Im zweiten Argument von 'all', namley (Leerzeichen sud) ' In dem Ausdruck all (≡ (Nichts, nichts)) (Leerzeichen sud) Irgendwelche haben eine Idee, wie man den Compiler bitte, um dieses zum Funktionieren zu bringen? :) – Darren
Nach dem Laden Ihres Moduls in Ghci, was ist die Ausgabe von ': ich Pos'? Was ist die Ausgabe von ': t Leerzeichen '? Der Compiler sagt dir, Pos kann niemals "(Nichts, Nichts) sein", also macht es keinen Sinn, sie mit diesen Werten zu vergleichen. –