I think we can move the guard interpreter-specific logic all the way down into `#evaluate_command` so we don't need to create this intermediate block. `#evaluate_command` would just look like:

```ruby
def evaluate_command
  guard_interpeter.evaluate
end
```

And then the default guard interpreter would do `shell_out(@command, @command_opts).status.success?` while the new guard interpreter stuff would execute the guard resource rather than generating a lambda.