Would it be possible to apply the same idea from `Array#deep_compact` to `Hash#compact` and `Hash#deep_compact`?

```ruby
def compact(option = nil)
  @option = option
  hash = self.dup.compact!(@option)
  hash.nil? ? nil : self
end
```

```ruby
def deep_compact(option = nil)
  @option = option
  hash = self.dup.deep_compact!(@option)
  hash.nil? ? nil : self
end
```
I have not tested either of these ideas myself. Just thinking out loud.