Linguistic Reuse

"An age old question asked of language design is whether or not library design is language design. Because interfaces are themselves little languages, and libraries implement interfaces, library design must be a form of linguistic extension, even if an extremely rudimentary one. In practice, library design is difficult, and the hard problems that library designers encounter - how to balance hiding and exposing functionality, how to preserve invariants, what types to create, export and make opaque, what static and dynamic scope operators to provide, and so forth - are really linguistic ones. So it is heartening to note that the design of unit/lang not only encompasses this form of language extension, but blurs the distinction between these two forms in a way traditional language extension mechanisms (such as macro systems, extensible grammars or operator overloading) do not."
p67 "Linguistic Reuse" DPhil thesis 2001 pdf Shriram Krishnamurthi