I wrote the following program to check strings for balanced parenthesis:
isBalanced xs = isBalanced\' xs []
isBalanced\' [] [] = True
isBalanced\' [] _ = False
Probably overkill for a problem this simple, but you could try looking up parser combinators.
As a more elementary simplification, you could rewrite your recursion into folding over a function that takes a stack and a character from the string to a new stack. (Whether this would make actually it simpler is in the eye of the beholder, though).