Sun Jun 29 12:37:10 CEST 2008

is interpretation really different?

This popped up before, but I'm not sure if it's an arbitrary
re-arrangement. Consider the expression from last post:

                S a b

Where 'S' is a state, and a and b are functions. Turning the data/code
roles around, one could interpret S as a function and a,b as data,
where application of S yields a new function:

                ((S a) b)

This has the semantics of an interpreter: 'S' is an interpreter state
that takes the input code sequence (a b) to produce a new state.
Compare this to the state monad in Haskell.

Somehow it feels as if (S a) or (a S) are really only two sides of the
same coin: producing a new state interpreter S from the message a, or
computing a new state S to be interpreted by function a. Is this
related to different order of evaluation/currying of the same