Fork me on GitHub
#announcements
<
2023-07-18
>
Ingy döt Net13:07:46

Greetings! My name is https://github.com/ingydotnet/ and I was invited here by @pez. I helped invent and currently maintain the https://yaml.org/. A few months ago I started writing a Clojure platform called https://github.com/ingydotnet/lingy. Lingy intends to target host languages currently lacking a Clojure, starting with Perl. Lingy wants to take Clojure concepts deep into Perl including compiling to some JITing VM (tbd). @pez already has me working on an nREPL implementation for integration with Calva and other Clojure editors! I also started a sister language called https://github.com/yaml/yamlscript that is really just an alternate syntax reader for Clojure platforms. At https://tprc.to/tprc-2023-tor/ last week I gave a talk about https://www.youtube.com/watch?v=9OcFh-HaCyI. I'm extremely pleased that it got noticed by @pez and led me to this amazing place. Among other things, a top goal of both Lingy and YAMLScript is to bring more programming communities together. Please stop by the new #lingy and #yamlscript channels and let's chat!

2
2
clojure-spin 50
2
🐪 33
metal 20
🎉 44
👋 86
10
bschrag21:07:30

Initial release: open-source https://github.com/bobschrag/clolog

🎉 58
😮 16
😎 6
Max13:07:28

I don’t have a ton of experience with logic programming so this may be a silly question, but how does this differ from core.logic?

bschrag16:07:58

@U01EB0V3H39 This https://stackoverflow.com/questions/28467011/what-are-the-main-technical-differences-between-prolog-and-minikanren-with-resp may be of interest. I wanted to exploit in Clojure the style of programming I've long used in other Lisps. clolog includes almost everything I ever wanted or wished for in this context. Particularly important to an application at hand has been https://link.springer.com/chapter/10.1007/978-1-4684-3384-5_11 (clolog not).

Max17:07:16

So if I understand correctly, clolog is an implementation of a prolog-like in Clojure rather than a gateway to an external prolog implementation? And prolog-likes and minikanrens aim to do mostly the same thing but make different tradeoffs? The stackoverflow link you posted mentioned that one of the major tradeoffs between the two was that minikanren is typically embedded whereas prolog is usually a separate program; it seems like clolog removes that element of the tradeoff? Without the embedded-vs-external tradeoff, what are the reasons why one might choose a minikanren vs a prolog? Or are they similar enough in most cases that it’s the kind of thing where you’ll know what you need once you’re deep enough to need it?

bschrag21:07:57

@U01EB0V3H39 Yes, clolog is a Clojure-embedded Prolog interpreter. core.logic seems (I've not been a user) to be purer, side effect-free logic programming, naturally amenable to parallelism and to supporting full relational or constraint logic programming. clolog (or any Prolog) should be similarly parallelizable when sticking to a subset---avoiding cut, if-then-else, and (if eschewing nonmonotonic reasoning) negation as failure. Clojure itself includes practical escapes from pure functionalism---e.g., atoms. You don't want to overuse those things, but, when you want them, you want them, I think.

Max21:07:27

Interesting! What are the kinds of problems that clolog/prologs are better suited for?

bschrag21:07:35

@U01EB0V3H39 All my experience is with Lisp-embedded Prologs, where it's been a matter of parceling out functionality---what works more naturally on the Lisp/Clojure side, what on the Prolog/clolog side, and how you want to control all that. If you want the things in clolog's bag of tricks, then there they are. 🙂