
Here's a question for the Haskell community that I've been wrestling with lately. When we say "lists are monads" what does that mean? I can see one of two things. First the slightly superficial... A.) Lists can be made members of the Monads class, and you can define a couple of functions, "bind" and "return" that obey the Three Laws. ...or the more fundamental... B.) Monads somehow define lists. If you had a version of Haskell without recursive data types you wouldn't be at a loss, because you could always use monads to recreate lists. Maybe "bind" would replace the job of "cons" and "return" would replace "head" or somesuch. I'm of the mind that A.) is the right interpretation, but I've seen the "lists are monads" meme mentioned enough that I sometimes question it. In fact, I had a hard time articulating B.) because I don't know what the other possibilies are. In case it isn't clear enough, here's another analogy... A.) Insects are cold blooded animals. ...while that is 100% true, many other animals are cold blooded. It doesn't get at the essence of what it means to be an insect. Compare with a statment like... B.) Insects are six-legged animals with an exoskeleton. ...which tells us a lot more about the fundamental nature of insects. Thanks, Greg Buchholz