--- Terrence Brannon <[EMAIL PROTECTED]> wrote: > > is basically an intro to logic programming. In this, I > > happen to mention Terrence's AI::Proplog as only allowing > > boolean queries. Please let me know if I'm wrong. > > > > You might mention the Perl interface to CLIPS: > > http://www.ghg.net/clips/CLIPS-FAQ > > Which I found much more useable than Prolog.
I had not heard about this (or I don't remember it if I did.) However from http://sourceforge.net/projects/cape/, it appears to be a dead beta project that's not on the CPAN. Is there more that I am not seeing? > Also, Artrijus Tang developed an interface to PLT Scheme > > http://cpan.uwinnipeg.ca/dist/Inline-MzScheme > > which gives us access to Dorai Sitaram's Schelog: > > http://www.ccs.neu.edu/home/dorai/schelog/schelog.html Ooh, that's looks very interesting. I'm going to have to check that out. > What software design goals will be reached when you complete this > project? How will they overlap/compliment the already powerful work > done in FSA::Rules? First, I'm glad you like FSA::Rules. David and I put a lot of work into that. Thanks for the nice words. The intent is to easily bring logic programming to Perl. Eventually, I want people to be able to write this: # What this is doing is explained in # http://www.perlmonks.org/?node_id=424075 use AI::Logic functors => [qw/append/], vars => [qw/W X Y Z/], import => 1; # imports builtins like HEAD(X) my $logic = AI::Logic->new; $logic->assert( append([], X, X), append([HEAD(W),X],Y,[HEAD(W),Z]) ->IF(append(X,Y,Z)) ); $logic->query(append(X,Y,[qw/a b c d/])); while (my $results = $logic->next) { my $x = $results->X; my $y = $results->Y; print "X is [EMAIL PROTECTED] Y is [EMAIL PROTECTED]"; } Which would print something like: X is []. Y is [a,b,c,d]. X is [a]. Y is [b,c,d]. X is [a,b]. Y is [c,d]. X is [a,b,c]. Y is [d]. X is [a,b,c,d]. Y is []. Currently, this is not easy to do in Perl, but the AI::Prolog module does have the core of the algorithm there and can generate those results (though not in that format or with that syntax.) As for how it's different from FSA::Rules, well, FSA::Rules is a state machine. While I find it rather easy to use (for a state machine), it didn't seem to map well to the problem state (hah!) at hand. Of course, if I could figure out a decent way of building a known set of transitions via states, I could do it with that, but I haven't yet. If you can figure it out, I'd love to steal -- ahem -- see your code :) I'll also take a look at Schelog. If Autrijus' work is solid enough and looks like it will be supported, that could be a nice route to go. It would also be a lot faster than what I have. Currently (with no optimizations), it appears to be running about 1000 LIPS (Logical Inferences Per Second.) That's very slow. Cheers, Ovid ===== If this message is a response to a question on a mailing list, please send follow up questions to the list. Web Programming with Perl -- http://users.easystreet.com/ovid/cgi_course/ _______________________________________________ sw-design mailing list [email protected] http://metaperl.com/cgi-bin/mailman/listinfo/sw-design
