AI-Prolog
    
    
  
  
  
view release on metacpan or search on metacpan
lib/AI/Prolog/Term/Cut.pm view on Meta::CPAN
$REVISION = '$Id: Cut.pm,v 1.2 2005/02/20 18:27:55 ovid Exp $';
$VERSION = '0.1';
@ISA = 'AI::Prolog::Term';
use strict;
use warnings;
use aliased 'AI::Prolog::Term';
sub new {
    my ($proto, $stack_top) = @_;
    my $self = $proto->SUPER::new('!',0);
    $self->{varid} = $stack_top;
    return $self;
}
sub to_string {
    my $self = shift;
    return "Cut->$self->{varid}";
}
sub dup { # XXX recast as Term?
    
  
  
  lib/AI/Prolog/Term/Number.pm view on Meta::CPAN
$VERSION = '0.1';
@ISA = 'AI::Prolog::Term';
use strict;
use warnings;
use Scalar::Util qw/looks_like_number/;
use aliased 'AI::Prolog::Term';
sub new {
    my ($proto, $number) = @_;
    my $self = $proto->SUPER::new($number, 0);
    $self->{varid} = defined $number && looks_like_number($number)
        ? $number
        : 0;
    return $self;
}
sub value { shift->{varid} }
sub dup { # should this be recast as the parent?
    my $self = shift;
    
  
  
  lib/AI/Prolog/TermList/Clause.pm view on Meta::CPAN
$VERSION  = '0.1';
use strict;
use warnings;
use base 'AI::Prolog::TermList';
sub new {
    #      Term  TermList
    my $class = shift;
    return $class->SUPER::new(@_);
}
sub to_string {
    my $self = shift;
    my ( $term, $next ) = ( $self->term, $self->next );
    foreach ( $term, $next ) {
        $_ = $_ ? $_->to_string : "null";
    }
    return sprintf "%s :- %s" => $term, $next;
}
    
  
  
  lib/AI/Prolog/TermList/Primitive.pm view on Meta::CPAN
package AI::Prolog::TermList::Primitive;
$REVISION = '$Id: Primitive.pm,v 1.2 2005/02/20 18:27:55 ovid Exp $';
$VERSION = '0.1';
@ISA = 'AI::Prolog::TermList';
use strict;
use warnings;
use Scalar::Util qw/looks_like_number/;
sub new {
    my ($class, $number) = @_;
    my $self = $class->SUPER::new; # correct?
    $self->{ID} = looks_like_number($number) ? $number : 0;
    return $self;
}
sub ID { shift->{ID} }
sub to_string { " <".shift->{ID}."> " }
1;
    
  
  
  lib/AI/Prolog/TermList/Step.pm view on Meta::CPAN
$REVISION = '$Id: Step.pm,v 1.2 2005/02/20 18:27:55 ovid Exp $';
$VERSION = '0.1';
@ISA = 'AI::Prolog::TermList';
use strict;
use warnings;
use aliased 'AI::Prolog::Term';
sub new {
    my ($class, $termlist) = @_;
    my $self = $class->SUPER::new;
    $self->{next}     = $termlist->next;
    $termlist->{next} = $self;
    $self->{term}     = Term->new('STEP',0);
    return $self;
}
1;
__END__
    
  
  
  
( run in 0.690 second using v1.01-cache-2.11-cpan-a1d94b6210f )