Not to self-promote too much, but the main focus of my programming efforts is currently CLIPS. Over the past few years, I've written articles about and even made some fun projects with CLIPS:
Is it possible to make a reasonable rules engine in Ruby rather than a "bolt-on" (separate rules language files)? I think its interesting that its the LISP languages that spawned rules-engines, and as far as I've seen, the only language that can produce a reasonable rules engine as an API library.
The precursor to CLIPS was called ART Inference and was a large commercial & very expensive Expert System development tool, written in Common Lisp. Unfortunately it seems to be lost - I haven't seen anything about it for several decades.
Other than that there are a bunch of rule-based systems in Common Lisp.
For example LispWorks Enterprise includes "KnowledgeWorks", which features a forward chainer based on the RETE algorithm.
I just made CLIPSockets public, which is a culmination of learning I've taken from trying to make web applications using primarily CLIPS. Thought I'd bump it here:
Close on how Maclisp/Macsyma or CL/Maxima did integration/differentiation.
Also, a chapter of Paradigms of Artificial Intelligence.
OFC, writting a CLIPS parser under CL would be trivial.
Comments
Related. Others?
A Simple TCP Server Written in Go and CLIPS - https://news.ycombinator.com/item?id=34187247 - Dec 2022 (1 comment)
Show HN: Tour of CLIPS - https://news.ycombinator.com/item?id=33083169 - Oct 2022 (4 comments)
CLIPS: A Tool for Building Expert Systems - https://news.ycombinator.com/item?id=19835214 - May 2019 (62 comments)
Symbolic Integration Using CLIPS (1997) - https://news.ycombinator.com/item?id=15399391 - Oct 2017 (0 comments, but interesting)
Build Node-JS expert systems with node-CLIPS - https://news.ycombinator.com/item?id=5424493 - March 2013 (1 comment)
Edit: since there has been so little discussion over the years, I've changed the top URL from https://ryjo.codes/articles/forgoing-implicity-using-the-alg... to an article (suggested by ryjo) that gives more of an intro and overview.
Not to self-promote too much, but the main focus of my programming efforts is currently CLIPS. Over the past few years, I've written articles about and even made some fun projects with CLIPS:
* Stop Writing In-app Caches and Start Writing Inherently Cached Apps with CLIPS - https://news.ycombinator.com/item?id=33342959
* Conway's Game of Life Written in CLIPS - https://news.ycombinator.com/item?id=34428083
* A* Algorithm Written in CLIPS - https://news.ycombinator.com/item?id=34340212
* Run CLIPS in a C++ AWS Lambda - https://news.ycombinator.com/item?id=37322937
* Write a Ruby C Extension to Use CLIPS from Ruby: Part 1 - https://news.ycombinator.com/item?id=35708717
* Write a Ruby C Extension to Use CLIPS from Ruby: Part 2 - https://news.ycombinator.com/item?id=36461022
Is it possible to make a reasonable rules engine in Ruby rather than a "bolt-on" (separate rules language files)? I think its interesting that its the LISP languages that spawned rules-engines, and as far as I've seen, the only language that can produce a reasonable rules engine as an API library.
Is it possible: yes.
Can you write your own home-grown rules engine in Ruby: yes.
Can you use off-the-shelf gems: yes. Here's a few I poked around in my previous explorations into Ruby Rules Engines:
* durable rules - https://github.com/jruizgit/rules?tab=readme-ov-file#ruby
* wongi - https://github.com/ulfurinn/wongi-engine
* rules - https://github.com/azach/rules
* ruleby - https://github.com/Ruleby/ruleby
edit: It's also possible to write your own Ruby gem in C so that you can pass the handling of the RHS of your rules to a Ruby script.Do these Ruby libraries actually implement the Rete optimization in control flow though?
Does it exist for Common Lisp/Scheme? I know that could be implemented in a day, but still...
Edit: https://lisa.sourceforge.net/
The precursor to CLIPS was called ART Inference and was a large commercial & very expensive Expert System development tool, written in Common Lisp. Unfortunately it seems to be lost - I haven't seen anything about it for several decades.
Other than that there are a bunch of rule-based systems in Common Lisp.
For example LispWorks Enterprise includes "KnowledgeWorks", which features a forward chainer based on the RETE algorithm.
https://www.lispworks.com/products/knowledgeworks.html
I just made CLIPSockets public, which is a culmination of learning I've taken from trying to make web applications using primarily CLIPS. Thought I'd bump it here:
CLIPSockets: Clips low-level socket implementation - https://news.ycombinator.com/item?id=40300303
Close on how Maclisp/Macsyma or CL/Maxima did integration/differentiation. Also, a chapter of Paradigms of Artificial Intelligence. OFC, writting a CLIPS parser under CL would be trivial.