Turn a string inside out
Haskell, 124 120 119 117 113 110 109 106 105 104 101 98 bytes

4 bytes saved thanks to bartavelle!

3 bytes saved thanks to Zgarb

1 byte saved thanks to Peter Taylor

Here's a solution I worked out in Haskell.  Its ok right now pretty good thanks to some help I received, but I'm looking to make this shorter, so feedback/suggestions are appreciated.



until(!0)g.map d
_!1=1&lt;0
('(':a)!x=a!(x-1)
(_:a)!x=a!(x+1)
_!_=1&gt;0
g(a:b)=b++[a]
d '('=')'
d _='('


Try it online!

Explanation

This program defines 4 functions,  the first (!) determines if a string is balanced.  Its defined as follows:

_!1=1&lt;0
('(':a)!x=a!(x-1)
(_:a)!x=a!(x+1)
_!_=1&gt;0


This check assumes that the input has an equal number of open and close parens thanks to a suggestion from Peter Taylor.

The next g will rotate the string once.

g(a:b)=b++[a]


Then we have d which simply takes a paren and mirrors it

d '('=')'
d _='('


Finally we have the function we are concerned with. Here we use a pointfree representation of until(!0)g composed with map d, which maps d to the input and applies g until the result is balanced.  This is the exact process described in the question.

until(!0)g.map d