1 package DX::Role::Predicate;
3 use List::Util qw(reduce);
4 use DX::Utils qw(step CONTENTS_OF);
7 sub _possible_resolution_list {
8 my ($self, @args) = @_;
9 my $rspace = $self->_resolution_space_for(@args);
11 while (my $next_res = $rspace->next_resolution) {
12 $rspace = $rspace->remaining_resolution_space;
14 actions => $next_res->actions,
15 depends_on => $next_res->veracity_depends_on,
21 sub resolution_step_for {
22 my ($self, $prop, @args) = @_;
23 my ($last, @rest) = reverse $self->_possible_resolution_list(@args);
24 return undef unless $last;
25 my $targ = $last->but(resolves => $prop);
27 alternative_step => $targ,
33 sub selection_depends_on {
34 my ($self, @args) = @_;