I understand how monadic computation works, I am just wondering where does the name come from. I cannot relate the thing that the bind
operator actually does (i.e. unbox the monadic value, and then apply a function to produce another monadic value) and the name bind
(which, to me, means associate two things together).
I understand why we have the name return
(I suspect it has to do with the Haskell do-notation), although IMHO it isn't a good name either. Return indicates a change in control flow but it really isn't, all it does is produce a monadic value.