A View of Monads (Re: performance of monads)

Eray Ozkural erayo@cs.bilkent.edu.tr
Tue, 19 Feb 2002 16:50:56 +0200

Hash: SHA1

Hi Richard,

On Tuesday 19 February 2002 06:57, Richard Uhtenwoldt wrote:
> This is a weak argument.
> First of all it is not the case that imperative coders always specify a
> total ordering: multitasking, threading and interrupts (and their
> projections into software as in Unix signals and asynchronous
> exceptions) are ways of specifying partial ordering when a total
> ordering would lose.

> Note that modern cpu designs use "out-of-order" execution strategies;
> so on micro-second timescales they
> ignore the total ordering when doing so suits them and
> when it preserves semantics.

I might add to the above points the obvious. Imperative programming languages 
in general do _not_ specify a total ordering. Each statement _can_ have a 
side effect[*] and the compiler is free to rearrange code such that it runs 
faster and preserves semantics. As written in any compiler textbook from 


[*] The compiler will know when this is possible, and when the statement is 
free of side effects. You can specify that no side effects occur in C++ for 
instance. And the compilers also know that certain expressions are always 
free of side effects, etc.

- -- 
Eray Ozkural (exa) <erayo@cs.bilkent.edu.tr>
Comp. Sci. Dept., Bilkent University, Ankara
www: http://www.cs.bilkent.edu.tr/~erayo
GPG public key fingerprint: 360C 852F 88B0 A745 F31B  EA0F 7C07 AE16 874D 539C
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org