News for hackers. Stuff that matters.
Re:Scalable Program Architectures by loup-vaillant on Tuesday April 15, 2014 @03:11AM (#7590692)
Imagine 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.

There are no comments on this comment yet.