Replies: 2 comments
-
I see that we currently don't have a consensus on a great place to publish findings. Might be time to revisit that discussion! This seems like the kind of thing that would benefit strongly from collective editing, but for now, I think these discussions living in the discussions thread is fine. |
Beta Was this translation helpful? Give feedback.
-
I want to share what helped me personally to learn Prolog. I would recommend searching and reading academic papers on Prolog, you can acquire new insights, practical advice, good idioms, and sometimes whole implementations. There are few researchers who have public repositories with some bleeding edge technology (inductive logic programming, temporal logic to name a few). Also read code! Just search for projects implemented in Prolog and see how they do things. |
Beta Was this translation helpful? Give feedback.
-
Hello everyone!
I'd like to propose a little initiative with the working title "The Scryer Scholar's Series".
@triska has done an amazing job with The Power of Prolog and accompanying YouTube videos to teach the philosophy and macro-level skills for writing Prolog code. I feel (and this may not be the case) that there is something of a gap in education between "the basics" of Prolog and "professional" Prolog, and experienced developers flocking to Scryer after having "seen the light", Socratically speaking, might wish to know how to write production quality Scryer Prolog.
The rest of this discussion pertains to Scryer Prolog exclusively, except insofar as comparative language studies would further an exploration of Scryer.
In case there needs to be a justification of why focus Scryer Prolog in particular:
While I think other Prologs are worth studying from a comparative language perspective and a "how can we implement this in Scryer" perspective, I find Scryer is an incredibly exciting and enticing project to engage with because:
Most experienced (non-Prolog) developers know that the next thing to do is to start reading source code others have written, which I've started doing. However, because of point 0 (above), some modules such as
$toplevel
andloader
are particularly dense -- I have never seen VM control split between host and target language before. I've also noticed from online discussions it seems like there is a lot of "common knowledge" that professional/experienced Prolog developers know that is not "common knowledge" outside of Prolog. Even though I've been doing functional programming for over a decade, and even though Prolog is from the same intellectual heritage, it is quite special and different enough that I have not read most of the books or papers.So I can think of several great goals for the Scryer Scholar's Series:
I also realize for a lot of you, discussing the nuances of freeze/2, dif/2, difference lists, and other such topics may at this point seem trivial, the existence of reif indicates that even something basic like
dif/2
is apparently often used suboptimally! Even things like how and when to use (or never use) the cut operator seem to be fairly scattered and ingrained in the "common knowledge" of the experienced Prolog developers. I say a new modern Prolog deserves a new modern discourse on the distillation of best practices! 🥂Epilogue
In the spirit of [Cunningham's Law](https://meta.wikimedia.org/wiki/Cunningham%27s_Law), I will happily volunteer to kick this adventure off by proposing topics and issues with a rambling and most likely incorrect analysis of modules, papers, and techniques, and when I have irritated you enough with my gross conceptual errors, please do feel free to chime in and correct me! Also, if this topic has been covered very well elsewhere, I would still love to curate and categorize these resources in the wiki in an "FAQ" format :)Thanks again and looking forward to learning with you 🎓 !
Beta Was this translation helpful? Give feedback.
All reactions