Итак, я написал игру с шестигранной копией и пытаюсь создать функцию, которая возвращает True, если доска находится в выигрышном состоянии, на данный момент она выглядит следующим образом:
checkWin :: BoardState -> Bool
checkWin b1@(blackPieces,whitePieces,turn,size,win)
|(length blackPieces) == 0 = True
|(length whitePieces) == 0 = True
|length (generateMoves b1) == 0 = True
|otherwise = False
Так что это работает, если не осталось чёрных или белых фигур или если никто не может сделать ход, но это не сработает, если пешка противника достигнет конца доски (еще один способ выиграть в гексапоне). Переменные blackPieces и whitePieces представляют собой список координат, т.е. [(1,1), (2,1), (3,1)] того, где эти пешки находятся на доске размер n ( поворот истинно, если его белые поворачиваются)
Мне хотелось добавить эти условия в метод, но компилятору это не понравилось.
|(_,1) `elem` whitePieces = True
|(_,size) `elem` blackPieces = True
Есть ли другой способ сказать: "Есть ли в whitePieces какие-либо кортежи, у которых вторым элементом является 1 (то есть достиг другой стороны доски)".
Заранее благодарим за ваши полезные комментарии.