4 ms·
What's the difference between "generic" and "exhaustive," and where can I read more about all this stuff?
by mushly 12y ago
What's the difference between "generic" and "exhaustive," and where can I read more about all this stuff?
- loup-vaillant 12y agoImagine you want to process a list of foobarbaz, where elements can be foos, bars, or bazes. Exhaustion is when you write foo specific code, bar specific code, and baz specific code. Then your list-processing facility is general because it handles all the cases. A typical way to do that in practice is to use subtype polymorphism, with the class inheritance mechanism: have a foobarbaz interface, a foo class that implements it, a bar class that implements it, and a baz class that implements it. Each with their own code. Genericness is when you ignore the foobarbaz specifics altogether: your code doesn't even mention the types. A typical way to do that in practice is to use parametric polymorphism (generics in Java, templates in C++). See C++'s Algorithm library for an example, or the standard Prelude from Haskell, or the OCaml standard library.