perlmeditation
Ovid
<p>There has been a bit of interest expressed in my <tt>[id://181980|AI::Perlog]</tt> implementation, including requests for what code I have written so far. While I do not intend to upload anything to the CPAN as I consider this code to be pre-alpha quality, I figured I may as well honor the request and let you [http://www.easystreet.com/~ovid/testing/AI-Perlog-.01.tar.gz|download the code]. The documentation is spotty, but the tests pass and the should give an indication of what's working and what's not. Currently, the only thing I have implemented is boolean queries on facts.</p>
<code>
use AI::Perlog;
my $pg = AI::Perlog->new;
$pg->add_fact( gives => qw/ Ovid money kudra / );
$pg->add_fact( gives => qw/ grep grief Ovid / );
# an underscore is synonymous with the empty string or undef
print "y\n" if $pg->gives( qw/ _ _ kudra / ); # does anyone give anything to kudra?
print "y\n" if $pg->gives( '', '', 'kudra' ); # same thing
print "y\n" if $pg->gives( undef, undef, 'kudra' ); # same thing
print "y\n" if $pg->gives( qw/ grep _ Ovid / ); # does grep give anything to Ovid?
print "n\n" if ! $pg->gives( qw/ Ovid _ grep / ); # Returns false. Ovid gives nothing to grep
</code>
<p>Needless to say, it's just a toy right now, but I hope to have the first stab at unification done later this week, at which point this might actually have some limited utility. Currently, the code generates a spurious warning under Cygwin, but runs clean on Windows 2000 and RH 7.2 (both running 5.6.1).</p>
<p>Cheers,<br />
<a href="/index.pl?node=Ovid&lastnode_id=1072">Ovid</a></p>
<p><strong>Update:</strong> You can read about some of the future plans at [http://use.perl.org/~Ovid/journal/6729|use.perl].</p>
<p><strong>Update 2:</strong> Also be aware that this beast eats memory for breakfast. If anyone can come up with a less memory intestive solution that doesn't sacrifice performance, that would be great. Also, I intend to eventually port much of this to [kobe://Inline::C], so the simpler the data structures, the better.</p>
<p><small>Join the <a href="http://setiathome.ssl.berkeley.edu/stats/team/team_86606.html">Perlmonks Setiathome Group</a> or just click on the the link and check out our stats.</small></p>