updateBoard :: Board -> Edge -> Int -> IO (Board, Bool)
updateBoard b e p
  | isHorizontal e = return (moveHorizontal b e p)
  | otherwise      = return (moveVertical b e p)
updateBoard :: Board -> Edge -> Int -> IO (Board, Bool)
updateBoard b e p
  | isHorizontal e = return (moveHorizontal b e p)
  | otherwise      = return (moveVertical b e p)
updateBoard b e p
  | isHorizontal e = return (moveHorizontal b e p)
  | otherwise      = return (moveVertical b e p)