This chapter describes extensions to the Prolog language introduced with SWI-Prolog version 7. The changes bring more modern syntactical conventions to Prolog such as key-value maps, called dicts as primary citizens and a restricted form of functional notation. They also extend Prolog basic types with strings, providing a natural notation to textual material as opposed to identifiers (atoms) and lists.
These extensions make the syntax more intuitive to new users, simplify the integration of domain specific languages (DSLs) and facilitate a more natural Prolog representation for popular exchange languages such as XML and JSON.
While many programs run unmodified in SWI-Prolog version 7, especially those that pass double quoted strings to general purpose list processing predicates require modifications. We provide a tool (list_strings/0) that we used to port a huge code base in half a day.