I think we follow the same logic as the `deepEquals` and use a `defaultCompare` function, it will simplify things.

everything else looks good to me. great work.