“Never tell people how to do things. Tell them what to do and they will surprise you with their ingenuity.” – George Patton
— Michael (Doc) Norton (@DocOnDev) March 31, 2013
The same can be said of declarative programming. If we tell the implementation what to do, not how to do it, then the implementation is free to improvise and innovate. This might happen in a library, in a compiler, or at runtime. Focus on properties the interface advertises, and we aren’t limited to implementations we can understand.