 This makes ADT extensible in a way that is orthogonal to the extensibility of class hierarchies.Class hierarchies can be extended with new subclasses but no new methods, while ADTs can be extended to provide new behavior for all existing constructors, but do not allow defining new constructors.Functions can consume functions as arguments