Commit | Line | Data |
55131db4 |
1 | package DX::Step::Backtrack; |
2 | |
3 | use DX::Class; |
4 | |
5 | with 'DX::Role::Step'; |
6 | |
7 | sub apply_to { |
8 | my ($self, $ss) = @_; |
9 | my ($first_alt, @rest_alt) = @{$ss->alternatives}; |
6a0483ff |
10 | return $ss->but(next_step => $ss->on_exhaustion_step) unless $first_alt; |
55131db4 |
11 | trace 'search.backtrack.rewind_to' => $first_alt->[1]; |
12 | return $ss->but( |
13 | current_hypothesis => $first_alt->[0], |
14 | alternatives => \@rest_alt, |
15 | next_step => $first_alt->[1], |
282b1d76 |
16 | is_solution_state => 0, |
55131db4 |
17 | ); |
18 | } |
19 | |
20 | 1; |