Oops, sent this off list the first time, here it is again.
Jake McArthur <jake at pikewerks.com> writes:
>mail at 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?