4 ms·
Well, we wanted to add some "life" to the universe with some automated trade convoys and so forth, and I had the crazy idea to use a rule-based system to implem
by a1k0n 15y ago
Well, we wanted to add some "life" to the universe with some automated trade convoys and so forth, and I had the crazy idea to use a rule-based system to implement it, and found an off-the-shelf clone of CLIPS (the expert system type thing), using the Rete algorithm called Lisa (http://lisa.sourceforge.net/ http://lisa.sourceforge.net/), and that was implemented in Common Lisp.
It turned out that the impedance mismatch between that and what I actually wanted to do was gigantic, and Lisa was way too slow as it would re-evaluate the whole world anytime anything changed, so I ended up reimplementing the rule interpreter to trigger based on state transitions while keeping the same sort of rules. It was much simpler, and worked ok, but still.
Writing it this way led to three levels of indirection: we'd write rules that tried to emulate a state machine that tried to emulate a do-this-then-that-then-that sort of thing. It was ridiculous and impossible to understand. Serializable coroutines were what we were really looking for, and we ended up rewriting the whole thing in Erlang which pretty much does that.
We also had memory management issues which we didn't know how to debug in SBCL, so the thing would crash all the time even when it was working.
- dustingetz 15y ago> Goofing around in Erlang FTFY ;) but seriously, why is Erlang any different than Lisp?
- outworlder 15y agoHow could someone answer this question? I think you should elaborate on what you are looking for.