Tony Morris (@dibblego) and Runar Bjarnason (@runarorama) are giants in the functional community. Both have a long history in the functional world and are the founding programmers behind such projects as FunctionalJava and Scalaz. In this talk Tony lines dependency injection up in his sights and shows how it can be done in a "pure functional" way using the
ReaderWriterState monad transformer. His language of choice in this talk is Scala but he shows how the concept holds in any functional language. There are a lot of concepts in this talk and may require a second if not third viewing. Either way, you will want to explore these concepts more closely by the end of the talk.
The talk can be found on youtube here.