56d1d2a746bbb0015e501c9588bdc232fd16c00f
[scpubgit/DX.git] / lib / DX / Proposition.pm
1 package DX::Proposition;
2
3 use DX::Class;
4
5 has predicate => (is => 'ro', required => 1);
6
7 has args => (is => 'ro', required => 1);
8
9 has introduces_names => (is => 'ro', required => 1);
10
11 has requires_names => (is => 'ro', required => 1);
12
13 sub resolve_for {
14   my ($self, $scope) = @_;
15   my $predicate = $scope->lookup_predicate($self->predicate);
16   my @args = map { ref($_) ? $_ : $scope->lookup($_) } @{$self->args};
17   #if (my $step = $scope->known_facts->resolution_step_for($predicate, @args)) {
18   #  return $step;
19   #}
20   return $predicate->resolution_step_for(@args);
21 }
22
23 1;