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], | |
16 | ); | |
17 | } | |
18 | ||
19 | 1; |