Is is actually useful somehow in a programming language?
Name:
Anonymous2009-02-04 13:56
Yes. For example, Haskell's STM monad disallows performing IO within a transaction, meaning it can be safely retried without the risk of IO being performed again. (Except, of course, for unsafePerformIO, but at least it's then obvious that it's doing naughty things.)
Name:
Anonymous2009-02-04 14:18
Well, laziness is very useful. And the easiest way to have an lazy language without side-effects fucking you up the ass is making that language referentially transparent.
Name:
Anonymous2009-02-04 19:11
But is it useful to the programmer, aside from being a way to do optimizations?
The property is useful writing readable code and building a mental model, doesn't hurt to have a formal way to annotate it and reap the compiler benefits.