depend upon low level modules. Both should depend upon abstractions. B. Abstractions should not depend upon details. Details should depend upon abstractions.
is Functional Programming?" by Kris Jenkins http://blog.jenkster.com/2015/12/what-is-functional-programming.html "Go To Statement Considered Harmful" by Edsger Dijkstra http://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf "Understanding Clojure's Persistent Vectors" by Jean-Niklas L'Orange http://hypirion.com/musings/understanding-persistent-vector-pt-1 "Clojure Protocols" by Stuart Halloway http://gotocon.com/dl/jaoo-aarhus-2010/slides/StuartHalloway_ClojureProtocolsArenotInterfaces.pdf "Choose Boring Technology" by Dan McKinley http://mcfunley.com/choose-boring-technology