We now consider a quick sort generic architecture built from three variants of such an algorithm; a Recursive_Quick_Sort, an Iterative_Quick_Sort, and a hybrid of Recursive_Quick_Sort and Insertion_Sort.
Consider the design and implementation of a set of components used to implement the Recursive_Quick_Sort body. There are at least three contentual concerns that need to be separately dealt with; a partition algorithm to partition a sequence into a "lower" and "upper" part, a control algorithm to recursively invoke the partition algorithm, and the Ada abstract machine provided by the compiler vendor. The base element ADT and the sequence ADT have already been provided as conceptual context.
Note the Ada abstract machine concern, at this stage most often taken for granted when designing a collection of interrelated components. Often we make a decision, for efficiency or portability reasons, to provide our own implementation of an abstraction already provided by the compiler. An example of such a abstraction is the compiler-provided dynamic storage allocation facility. Another is recursion. Also, although all implementations use facilities in the AAM, the number of facilities in the AAM used by implementations may vary.