4 ms·
There was a minor hype cycle with SMT solvers in 2019. For a while I was extremely fascinated by SAT as an encoding for hard problems that somehow had heuristi
by thanatropism 6y ago
There was a minor hype cycle with SMT solvers in 2019.
For a while I was extremely fascinated by SAT as an encoding for hard problems that somehow had heuristic fast solvers; particularly by SATPLAN, the blocks world, etc.
But there's an useful contrast with Lisp, the other thing everyone within a radius of HN would like to emerge as winner. Lisp is essentially a syntax concept. It isn't particularly opinionated about problems -- on the opposite, it's indefinitely extensible to accomodate nearly everything. So we have Clojure and Hy (a Lisp that superficially imitates Clojure but compiles to the Python AST) and people doing scikit-learn ML on Lisp.
Logic programming, on the other hand, wants problems to be formulated on its terms. It needs the world itself to change to "win big". Of course logic programming problems aren't going to disappear, as sparse linear algebra programs won't. But this isn't a paradigm, it's an application.
- felixyz 6y agoProlog-style logic programming is very different from SAT, SMT and Answer Set Programming in this regard. Prolog has the same features that you describe in Lisp. It's homoiconic, infinitely malleable, meta-level programming is trivial, etc. I recommend having a look at: https://www.metalevel.at/acomip/ https://www.metalevel.at/acomip/ (A Couple of Meta-interpreters in Prolog) and https://github.com/triska/lisprolog https://github.com/triska/lisprolog
- thelazydogsback 6y agoUnderstanding the declarative vs. operational semantics of Prolog (and how things like tabling can bridge the gap in some cases) is one of the most important concepts to master. It's really a shame that that more Prologs don't support alternate operational models -- though it's pretty trivial to write meta-interpreters with your own semantics (such as breadth-first eval, etc.) it would be nice if there were canonical versions. For CLP & attributed-variables at least there is some universality.