Halliday (2008: 183):
Language is a product of evolution, and like any evolved system it needs to be seen as a totality: to understand any part of it, we have to locate it in the context of the whole. But that “whole” is not some idealised, static construction; it is a conglomerate resulting from constant small adjustments each of which follows on from whatever had been there before. As with biological evolution, one is sometimes tempted to say that it would have been better to start from somewhere else! But however imperfect evolved systems are, they usually function better than designed ones. A language is a functioning whole, even though every single feature of it, taken on its own, could no doubt be improved. There always are […] leftover bits and pieces lying around from evolutionary processes […] but they get built into the workings of the language in one way or another.