Oups, I didn't notice that the original message was from 2011... On Tue, Nov 20, 2018, 5:41 AM Aleš Roubíček <rar...@gmail.com wrote:
> It was promoted to contrib since then. > https://github.com/clojure/core.match/wiki/Crazy-Ideas and > https://github.com/clojure/core.match are links you are looking for. > > On Monday, November 19, 2018 at 9:50:20 AM UTC+1, Khalid Jebbari wrote: >> >> https://github.com/swannodette/match/wiki/Crazy-Ideas >> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fswannodette%2Fmatch%2Fwiki%2FCrazy-Ideas&sa=D&sntz=1&usg=AFQjCNEXPd6rtfgrvqXsfNgHMPGx0Wjw7A> >> is >> 404, as well as https://github.com/swannodette/match >> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fswannodette%2Fmatch%2Fwiki%2FCrazy-Ideas&sa=D&sntz=1&usg=AFQjCNEXPd6rtfgrvqXsfNgHMPGx0Wjw7A> >> >> On Thursday, April 14, 2011 at 5:25:48 PM UTC+2, David Nolen wrote: >>> >>> When things begin to get recursive you may be on the right track :D >>> >>> Initially I was going to implement Nominal Logic Programming for Logos a >>> la William Byrd's dissertation, but I realized that his implementation >>> requires pattern matching. All the pattern matching libs I've seen thus far >>> for Clojure are too naive and too slow. Even more importantly pattern >>> matching is subsumed by predicate dispatch (CiteSeerX — Efficient >>> Predicate Dispatching >>> <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.47.4553>). >>> >>> Rich Hickey mentioned many moons ago that he'd like to see a predicate >>> dispatch implementation for Clojure that didn't have the kind of hardwiring >>> found in the Chambers/Chen paper. He suggested investigating Datalog. After >>> much reading, I've decided that a runtime in-memory Datalog that handles >>> dispatching is going to be too slow for many useful scenarios (an efficient >>> Datalog based on Binary Decision Diagrams might be possible, but this is an >>> incredibly complex undertaking in itself, meh). >>> >>> What we want is Standard MLs efficient compilation from decision >>> diagrams to switch statements (CiteSeerX — Optimizing Pattern Matching >>> <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.6.5507>). >>> However Standard ML (Haskell, OCaml, Scala as well) pattern-matching has >>> issues with order among other things (Programming in Standard ML >>> <http://www.cs.cmu.edu/~rwh/smlbook/book.pdf>). >>> >>> What if we allow a logic engine to drive the compilation of the decision >>> diagram? This would be done by users mapping logic predicates to Clojure >>> predicate functions. Relationships between predicates can be added to the >>> logic engine allowing compilation to produce a very efficient decision >>> diagram. Nothing is hard coded, everything is driven by the kinds of >>> predicates and relationships between predicates that a user actually cares >>> about. >>> >>> All this is to say that this means Logos needs the ability to load >>> database of facts, index those facts, and to accept new facts and >>> relationships and update accordingly. So this going to happen sooner rather >>> then later. >>> >>> I welcome any feedback from anyone who has thoughts on this approach to >>> implementing predicate dispatch efficiently! >>> >>> Some thoughts on what this might look like is evolving here, >>> https://github.com/swannodette/match/wiki/Crazy-Ideas. >>> >>> David >>> >>> On Mon, Apr 11, 2011 at 3:08 PM, David Nolen <dnolen...@gmail.com> >>> wrote: >>> >>>> On Mon, Apr 11, 2011 at 2:01 PM, Vagif Verdi <vagif...@gmail.com> >>>> wrote: >>>> >>>>> Can it be used as an inference (rule) engine ? >>>> >>>> >>>> If you mean in the same way that you can build inference (rule) engines >>>> in Prolog - I don't see why not. >>>> >>>> However there is a bit of work to be done in order to make building >>>> efficient rule engines easier: >>>> >>>> * Be able to load a database (aka Clojure collection) of facts >>>> * Indexing of facts >>>> * Intelligently use indexed facts >>>> >>>> Currently I'm a bit more interested in exploring type inference (via >>>> nominal logic) so I'm not sure when exactly I'll get to these, tho I'll >>>> gladly take patches from people who want such features sooner rather than >>>> later :) >>>> >>>> David >>>> >>> >>> -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to a topic in the > Google Groups "Clojure" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/clojure/peL04odPuCo/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.