arguments of a monoid operation) the two arguments of the bind are of
different types. But it's possible to make the connection between
monads and monoids much closer. This is discussed in [Monads in Category
-Theory](/advanced_notes/monads_in_category_theory).
+Theory](/advanced_topics/monads_in_category_theory).
See also <http://www.haskell.org/haskellwiki/Monad_Laws>.
Here are some papers that introduced monads into functional programming:
There's a long list of monad tutorials on the [[Offsite Reading]] page. Skimming the titles makes us laugh.
In the presentation we gave above---which follows the functional programming conventions---we took `unit`/return and `bind` as the primitive operations. From these a number of other general monad operations can be derived. It's also possible to take some of the others as primitive. The [Monads in Category
-Theory](/advanced_notes/monads_in_category_theory) notes do so, for example.
+Theory](/advanced_topics/monads_in_category_theory) notes do so, for example.
Here are some of the other general monad operations. You don't have to master these; they're collected here for your reference.