Detect Perfect Pairings Let's have a function \$f\$ that takes a string and removes all pairs of adjacent identical characters.  For example

\$f(a\color{red}{bb}ba\color{red}{cc}) = aba\$

Note that when two pairs overlap we only remove one of them.

We will call a string perfectly paired if repeated application eventually yields the empty string.  For example the string above \$abbbacc\$ is not perfectly paired because if we apply \$f\$ again we still get \$aba\$.  However a string like \$eabbccadde\$ is perfectly paired because if we apply \$f\$ three times we get the empty string

\$f(ea\color{red}{bbcc}a\color{red}{dd}e) = eaae\$

\$f(e\color{red}{aa}e) = ee\$

\$f(\color{red}{ee}) =\$



Your task is to write perfectly paired computer code that takes a string (of printable ASCII) and decides if it is perfectly paired. The bytestring of your source must be itself a perfectly paired string, although your code doesn't necessarily have to be restricted to printable ASCII.

You may output two distinct values: one for the case where the input is perfectly paired, and another one for cases where it isn't.

This is a code-golf question so answers will be scored by the size in bytes of their source with fewer bytes being better.



Test Cases

\$abbbacc \rightarrow \mathrm{False}\\
abcba \rightarrow \mathrm{False}\\
abab \rightarrow \mathrm{False}\\
abbbaabacc \rightarrow \mathrm{True}\\
eabbccadde \rightarrow \mathrm{True}\\
bbbb \rightarrow \mathrm{True}\$
Haskell, 146 124 bytes

((""##))
a===bb=bb==a
((aa:bb))##((cc:dd))|aa===cc=bb##dd|1==1=((cc:aa:bb))##dd
a##""=""===a
""##cc=((cc!!00:cc!!00:""))##cc


No comments. Returns either True or False.

Try it online!

Edit: -22 bytes thanks to @Cat Wizard