
A workbook for programmers who are new to Prolog and who wish to write useful Prolog programs. An outline of basic concepts is interleaved with worksheets, which are graduated in scope and give guidance for practising new ideas. Extended examples in the form of case studies then apply the ideas.
All the other books that I looked at were pretty awful, including the usual recommendations.
But what I actually find is the more time spent in Prolog, the more natural it is to express things in a way that is clear, logical and performant. As with any language/paradigm, there are a few gotchas to be experienced. But generally speaking, SLD resolution has never once been an obstacle (in the past 2 years) of coding.
The general execution model of Prolog is pretty simple. The lack of functions actually makes meta-programming much clearer and simpler. A term is just data, unless it's stated as a goal. It's only a valid goal if you've already defined its meaning.
So I'd be concerned that Curry gives up the simplicity of Prolog's execution model, and ease of meta-programming. I struggle with the lack of types in Prolog, but also know I can (at least in theory) use Prolog to solve correctness problems in Prolog code.
I'm currently using SWI-Prolog. Performance is excellent, it has excellent high-level concurrency primitives[0] (when was the last time you pegged all your cores solving a problem?), and many libraries. I might be one of the few people who has committed to using the integrated editor (PceEmacs) despite being a Vim person. PceEmacs is just too good at syntax highlighting and error detection.
At the same time, I'm a huge fan of Markus Triska. His Youtube[1] stuff is mind-expanding (watch all of it, even if you never write Prolog). He has an excellent book online[2]. I admire the way he explains and advances pure monotonic Prolog, and I appreciate the push for ISO conformance and his support for Prologs that that do the same (SWI is not on that list).
If you want to learn Prolog, watch all of Markus Triska's videos, read his book, and learn what Prolog could be in a perfect world. Then download SWI-Prolog, and maybe break some rules while getting things done at a blazing speed. Eventually you'll gravitate to what makes sense for you.
The Art of Prolog is a classic "must have". Clause and Effect is a good "hit the ground running" (on page 70 you're into symbolic differentiation via term rewriting).
0 https://www.swi-prolog.org/pldoc/man?section=thread
Novice: Adventure in Prolog Learn Prolog Now Logic Programming with Prolog
Med - Advanced: Clause and Effect The Art of Prolog The Craft of Prolog Wam Book The Practice of Prolog Prolog Programming for AI - Brakto
Deep Dive: Expert Systems in Prolog Natural Language Processing for Prolog Programmers Intelligent Image Processing in Prolog Representing Knowledge In Prolog
There are hundreds of books! The real gems are to be found in papers, look into published papers, you will find amazing topics on Meta Programming, Machine Learning, Compiler Construction, DCG, etc. Don't discount books by age, even if they were published in the 80s! The best books are from the 80's-90's.
A few sites https://www.metalevel.at/ https://www.cpp.edu/~jrfisher/www/prolog_tutorial/contents.h...
Use SWI-Prolog - https://www.swi-prolog.org/
Here is a sample of code generation in Prolog for register machines, https://github.com/segmond/PrologThingz/blob/master/clause_a...
An example for accumulator based machines which the 6502 https://github.com/segmond/PrologThingz/blob/master/clause_a...
The examples I posted is from an awesome Prolog book I read called "Clause and Effect"
Also, I think most people fail to appreciate how useful compiler techniques are outside of "compilers". Even just knowing a little about lexing and parsing goes a long way.
For Prolog, I'd also recommend _The Art of Prolog_ by Sterling & Shapiro and/or Clocksin's _Clause & Effect_.