------------------------------------------------------------------------------
pawnEnPassants :: Board -> [ Move ]
pawnEnPassants b = do
  (f, t, enp) <- pawnEnPassantSquares b
  return
    $ (enPassantTarget .~ enp)
    $ defaultMove f t Pawn (b^.next)


------------------------------------------------------------------------------
-- pieces that can give discovered checks
pawnEnPassants :: Board -> [ Move ]
pawnEnPassants b = do
  (f, t, enp) <- pawnEnPassantSquares b
  return
    $ (enPassantTarget .~ enp)
    $ defaultMove f t Pawn (b^.next)


------------------------------------------------------------------------------
-- pieces that can give discovered checks
pawnEnPassants b = do
  (f, t, enp) <- pawnEnPassantSquares b
  return
    $ (enPassantTarget .~ enp)
    $ defaultMove f t Pawn (b^.next)


------------------------------------------------------------------------------
-- pieces that can give discovered checks