Pretty cool.<p>I also did a stint messing around with Prolog and it was pretty awesome discovering an entirely new programming paradigm. I ended up doing the Priceonomics puzzle (<a href="https://priceonomics.com/jobs/puzzle/" rel="nofollow">https://priceonomics.com/jobs/puzzle/</a>) in Prolog and wrote up about it here - <a href="http://dangoldin.com/2013/06/07/fun-with-prolog-priceonomics-puzzle/" rel="nofollow">http://dangoldin.com/2013/06/07/fun-with-prolog-priceonomics...</a>
There is a revival of Datalog, a subset of Prolog, in relational databases and RAD. E.g., see LogicBlox or Datomic.<p>I always think Datalog should have taken a big chunk of SQL's market. And I wish something like Mozart/Oz was more mainstream so that we could implement subsystems using logic programming wherever needed.
Prolog is extremely different than other programming languages and as a result, learning it and writing a few small programs is very mind expanding.<p>It really drives home how different paradigms are suited to different problems. Prolog is suited toward problems like Einsteins riddle<p><a href="https://udel.edu/~os/riddle.html" rel="nofollow">https://udel.edu/~os/riddle.html</a>
In one of my first jobs out of college, I got assigned to figure out how to make the Tivoli Enterprise Console do something useful. They gave up on the IGS guys and picked me because I took a class that used Prolog in my sophomore year.<p>IBM bundled some ancient prolog dialect (copyright 1991 iirc) and the product was a mess.<p>But it was a great time... a coworker and I came up with a way to persist facts to DB2 and decode/standardize all sorts of fubar network device alarms. Good times.
James, check out Mercury next as it's a faster, better Prolog with some industrial use.<p><a href="https://mercurylang.org" rel="nofollow">https://mercurylang.org</a>
Have you learned about definite clause grammar yet? Once you do, you may be tempted to rewrite your parser, because it's a much more elegant way of constructing parsing rules.
Awesome, one of the most fun i had at university was building a Uri parser with prolog.<p>After i discovered that you could define operators i built a combinatorial parser, something akin to <a href="https://hackage.haskell.org/package/parsec" rel="nofollow">https://hackage.haskell.org/package/parsec</a> (of course nowhere as powerful) with similar syntax and do notation. <a href="https://gist.github.com/ga2arch/e8904177f722c6560e37" rel="nofollow">https://gist.github.com/ga2arch/e8904177f722c6560e37</a><p>And i didn't have to define backtracking because it is handled by prolog itself.