------------------------------------------------------------------------------
pawnPromotions :: Board -> [ Move ]
pawnPromotions b =
  let opSecond = rankBB $ case b^.next of
        White -> seventhRank
        Black -> secondRank
  in pawnMoves b (\f _ -> fromSquare f .&. opSecond /= mempty)
pawnPromotions :: Board -> [ Move ]
pawnPromotions b =
  let opSecond = rankBB $ case b^.next of
        White -> seventhRank
        Black -> secondRank
  in pawnMoves b (\f _ -> fromSquare f .&. opSecond /= mempty)
pawnPromotions b =
  let opSecond = rankBB $ case b^.next of
        White -> seventhRank
        Black -> secondRank
  in pawnMoves b (\f _ -> fromSquare f .&. opSecond /= mempty)