Я наткнулся на эту тему Понимание списка 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
не удалось сопоставить ожидаемый тип '(a, b)' с предполагаемым типом '[Pos]'
в первом аргументе 'fst' 'пара namley и второй в' (!!) 'namley fst pair
в первом аргументе '(rows) bankey (' columns sud) '
Редактировать
Мой вопрос: список, который я получаю из пробелов, представляет собой список [Pos], содержащий [(Nothing, Nothing), (Nothing, Nothing) ... и т. Д.).
Я хочу проверить, что все кортежи обоих элементов на самом деле являются «Nothing», то есть все элементы в [Pos] равны (Nothing, Nothing). Как я могу это проверить, Может кто-нибудь написать пример кода, я не очень хорош в синтаксисе haskell.
Редактировать 2
Вот пример содуку
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]
]
Редактировать 3
Вот как определяется судоку
data Sudoku = Sudoku { rows :: [[Maybe Int]] }
deriving ( Show, Eq )