There is a long extant GHC extension to elide constructor arguments
f (Leaf {}) = ... f (Node {}) = ...