5 ms·
Author here again: and thank you Tom for your feedback. I'm not the author of Screamer so am not going to defend it's runtime properties. These were not of inte
by chriskohlhepp 10y ago
Author here again: and thank you Tom for your feedback. I'm not the author of Screamer so am not going to defend it's runtime properties. These were not of interest to me and yes I could recode much of what I did in C++ which I am more familiar with than Prolog. I work in low latency trading, so I am happy to take any challenge from Prolog in C++. Bummer would be that I could not publish my solution. The reason Screamer is in there is to allow the problem to be expressed declaratively in terms of universal quantification. See also
https://chriskohlhepp.wordpress.com/reasoning-systems/specification-driven-programming-in-common-lisp/ https://chriskohlhepp.wordpress.com/reasoning-systems/specif...
- chriskohlhepp 10y agoSee also https://chriskohlhepp.wordpress.com/reasoning-systems/specification-driven-programming-a-design-pattern/ https://chriskohlhepp.wordpress.com/reasoning-systems/specif...
- tom_mellior 10y ago> The reason Screamer is in there is to allow the problem to be expressed declaratively in terms of universal quantification. Sure, though this particular example doesn't show its strengths very well. Your pre-analysis is so powerful that even in the case where you start with the empty board, any hand-written primitive brute force enumeration technique should be blazingly fast. > I work in low latency trading, so I am happy to take any challenge from Prolog in C++. I'm not saying Prolog is always faster than C++ or Common Lisp :-) I guess I'm saying that every embedding of a Prolog-like system in some other language I have seen so far was less powerful, less elegant, and much less performant than Prolog. This is only partly gloating from a Prolog fan. Another part of me would very much like to have better such systems integrated with other languages. One drawback of Prolog, of course, is that Prolog can be a bit painful to interface with the rest of your application. Unless, of course, you write everything in Prolog...