Trying:
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) .