The Magic Word: Monad
Since writing this post a few weeks ago – which now seems ridiculously naive when I read it back – I set off on a journey to discover the motivations behind the features of Linq. Eventually I cottoned on to the magic work: monad.
Once you know to add monad to your Google search terms, it’s like an undocumented modifier that makes the search results about 38 times as interesting as they would otherwise be.
It turns out that lots of people have been raving about monads for years, and meanwhile I’ve been thinking about them without knowing what to call them (apparently quite a common experience).
I particularly recommend the following:
- http://weblogs.asp.net/podwysocki/archive/2008/10/13/functional-net-linq-or-language-integrated-monads.aspx (follow the links then there to Brian Beckman’s videos on Channel 9)
- http://sigfpe.blogspot.com/2006/08/you-could-have-invented-monads-and.html (totally Haskell-based – one of the barriers to absorbing the majority of material about Monad applications is that you will need to go through a Haskell tutorial first)
Brian Beckman in particular is brilliant, the kind of teacher who will stop at nothing and crowbar knowledge into your head if he has to.
Resulting from this, there are now several things I want to blog about:
- Bluffers guide to Sets, Magmas, Semigroups, Monoids and Groups
- Mathematical Functions and Side-Effects
- What is an Abstract Data Type?
- Reference Variables and the Maybe Monad
- Functional Programming – Not a Silver Bullet