Why is "bind" written as >>= in Haskell Monads?

haskell, monads

Solution

`m >>= k` suggests "feed the result of computation `m` to the function `k`"; `m >> n` suggests "run the `m` computation and then the `n` computation".

Problem

What are the origins of the syntax ">>=" and ">>" in Haskell Monads? I'm not looking for a explanation of how Monads work but instead why the language designers chose that syntax. To me, ">>=" and ">>" seems kind of arbitrary and never made intuitive sense. Does anyone have a intuitive explanation? Is it syntax that comes from category theory?

Original source

Related problems