Oops, sent this off list the first time, here it is again. Jake McArthur <jake@pikewerks.com> writes:
mail@justinbogner.com wrote: | Bind is a sequencing operator rather than an application operator.
In my opinion, this is a common misconception. I think that bind would be nicer if its arguments were reversed.
If this is a misconception, why does thinking of it this way work so well? This idea is reinforced by the do notation syntactic sugar: bind can be represented by going into imperative land and "do"ing one thing before another. The fact that `x' may not actually have to happen before `f' is merely the typical sort of optimization we do in compilers for imperative languages: instructions that do not modify non-local state can be re-ordered, but IO cannot because it jumps elsewhere, no?