Unification can be very useful in solving some problems. Backtracking is also useful but sometimes gets in the way. Procedural code can be used to do anything that any language can do and students are more familiar with it. So I think Erlang is an interesting addition to languages. And that's without considering it's more practical aspects, e.g., multiprocessing, failover capability, etc.
Nor is Prolog syntax particularly ugly. A problem is that it is too simple, so simple that novices can become confused. Brna, Boulay and Pain discuss why Prolog is difficult in the book:
"Learning to Build and Comprehend Complex Information Structures: Prolog as a Case Study"
See the review there by Randall Heltzerman titled "The Most Unlikely Book Ever to be Published".
Fresh book recommendations delivered straight to your inbox every Thursday.