I think David Young wrote:
>
> Hello Ernest. My apologies for sending this to the list; mail directly
> to you is bouncing with a 'user unknown' message. Perhaps we're having
> 'sendmail' troubles...
>
> I'm seriously considering building a Common Lisp implementation of
> CLIPS, and including some of the more interesting features of Jess
> (eg. object pattern matching). My motivation is the apparent dearth of
> general-purpose expert system development tools freely-available to
> the Lisp community. I've done a significant amount of research here;
> the only useful platform I found was LOOM, and until recently this
> product was only available via a bloody permission-gathering
> process. The lack of such tools cost me eight months of prototyping
> work, and I don't want others to undergo the same frustrations.
This was the same dearth that drove me to write Jess in the first
place. Suggestion: consider writing using Scheme rather than
CLOS. There are a whole lot of Scheme folks out there these days,
more, I think, than CLOS folks. Also, several "Scheme in Java"
implementations exist. My one problem with LISP in general has always
been its poor integratedness/integrability with other languages and
platforms; current implementations of Scheme are the best in this
regard, AFAIK. I think a Scheme implementation would be great.
>
> [ FYI, LOOM is a hybrid OO modeling and inference engine implemented
> in Common Lisp. LOOM 3.0 appears quite powerful, but sometimes all one
> needs is a straight-forward rule-based system to get the job done. ]
>
> My suspicion right now is that most of the porting effort would rest
> in the Rete implementation; Lisp's wonderful macro facility will
> likely obviate the need for most (all?) of the parsing requirements
> for CLIPS constructs ('defrule', 'deffacts', etc.).
>
Indeed.
> If you please I could use some information, such as 1) paper(s) read
> to familiarize yourself with Rete and its implementation;
Really, the Forgy paper (see the Jess README) was all I needed to get
going. I also used the Giarrantano and Riley book because their
description of how CLIPS behaved often gave me hints as to how things
could be implemented.
> 2) your approach to Jess -- what pieces did you first build in order to
> experiment with, and get a feel for, performance, interfaces, etc?;
Well, the network builder is really the heart of the whole program;
this is basically the one huge routine in jess/ReteCompiler. This
routine has changed in detail, but not in coarse structure, from
Jess's first implementation. Getting it right, was the big hurdle. I
actually changed data structures several times -after- everything was
working - trying different implementations of lists. In your
implementation, you won't be worryig about that!
The Forgy paper describes the Rete network as a connected graph of
interacting Nodes, but then goes on to describe an implementation that
looks much more like a finite state machine. I chose (and have stuck
with) a more literal implementation in which the nodes themselves are
'active' and pass messages through the network. When C. F. was writing,
of course, O-O was not the big thing it was eventually to become.
The drawback to my implementation is that is leads to very deep stacks
- i.e., one node calls another node, which calls another, etc. In som
languages this kind of mutual recursion can be expensive. The
finite-state implementation would avoid this, but at the expense of
modularity, since some master routine would have to twiddle data in
multiple nodes.
> 3) would you object to one or more Jess features appearing in my
> port?. Things of this nature would be very helpful. Also, I would like
> to GPL the resulting product; are you aware of any licensing issues
> that might prohibit this?
>
There are no patented features in Jess, so no, I don't think there are
any issues. I think that perhaps we might help each other out; if you
implement Jess features, perhaps I might reimplement some of the
features you invent for your system. We could also share impementation
war stories that might improve both systems.
> I'd appreciate your thoughts on this. Thanks much.
>
Good luck; keep me informed.
---------------------------------------------------------
Ernest Friedman-Hill
Distributed Systems Research Phone: (925) 294-2154
Sandia National Labs FAX: (925) 294-2234
Org. 8920, MS 9214 [EMAIL PROTECTED]
PO Box 969 http://herzberg.ca.sandia.gov
Livermore, CA 94550
---------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the
list. List problems? Notify [EMAIL PROTECTED]
---------------------------------------------------------------------