There's a lot in Chapter 11 of "Paradigms of Artificial Intelligence programming" to be wary of:
- For efficiency reasons he stores the clauses on clause-head-predicate property lists
- He uses destructive operations such as nconc
- The resolution inference step and depth-first control strategy are interwoven.
All these things demand a rewrite.
But I was glad I persevered, because Peter Norvig's code finally came good this afternoon and I was able to successfully run it on a serious logic puzzle - the Zebra problem.
Where it ran remarkably quickly - forty times faster than in Dr Norvig's textbook-writing days. I was reminded of AI programming back in the late 1980s, when everything was slow and hard.
I imagined him developing his code on some ancient VAX 11/780 (as I used to do).