
wren ng thornton wrote:
On 9/16/10 4:59 PM, Ben Franksen wrote:
even though we always have
(\x -> e) y == let x = y in e
which means that let can be translated to lambda, the converse is not true,
Not exactly. Note that when compilers do CPS conversion, everything is converted into let-binding and continuations (i.e., longjump/goto with value passing). It's just dual to the everything-is-lambda world, nothing special.
I meant "not possible" as in "by a source-to-source transformation in a simple core-ML-like language" (such as is used in most introductions to HM-style type inference). If you translate to a language with mutable state and/or built-in continuations then things are different, of course. Do you know a good online introduction to CPS conversion that explains the kind of duality you mentioned? Cheers Ben