set_prolog_flag(double_quotes,atom). ?- atom(""). true.
Why have an “empty atom”? Should an atom not be always nonempty?
On second thoughts, there seems to be a bijective mapping between atoms and strings and lists of characters, so having it makes sense.
On the other hand, I tried to use the empty atom as the empty functor, but that doesn’t work:
?- X = ""(1,2). ERROR: Syntax error: Operator expected ERROR: X = " ERROR: ** here ** ERROR: "(1,2) .