Dragan Ivanovic, PhD Student, Technical University of Madrid (UPM), Spain
Representing and handling state mutations in Prolog can be cumbersome without resorting to internal database, global variables, or destructive assignment. In standard Prolog, state is usually carried in additional predicate arguments, and the programmer is responsible for manually ensuring threading. Furthermore, such code usually has to be significantly rewritten whenever state structure changes. The result is code that is complicated, error prone, hard to maintain and characterized by a low degree of reuse. These problems make Prolog less appealing for development of complex software systems.
The talk is about the work in progress on extending Prolog with contextual notation and semantics for automatic threading of structured state using source code transformation. We tackle the underlying concepts, rules, techniques, mechanisms and Ciao implementation. We reflect on their relationships with typing, module system, program analysis, and object-oriented programming paradigm.