[bitc-dev] deeply immutable functions and Haskell's ST
markm at cs.jhu.edu
Fri Aug 26 22:24:38 EDT 2005
Mark Miller wrote:
> Holding only Cassie's code constant, is there
> some way we could rewrite Max's code so that he could obtain this
In actual Scheme, or in any language with a non-local exit such as call/cc or
throw/try/catch, there is a way. Max's calculators could throw and Max could
catch. If we decide that continuations and 'throw' are not deep-frozen, then
calc-factory can't refer to these freely and still be accepted. But this
doesn't solve the problem. For example, when presented with an even number,
Bond could divide by 0, indirectly causing a throw, thus revealing to Max that
the number he was given was even.
Fortunately, Cassie can easily prevent this attack by surrounding the calls to
Q and Bond with a try/catch, in order to keep the exit from propagating.
Unfortunately, real programmers will often forget to do so, as I just did, so
this issue remains a real hazard.
Text by me above is hereby placed in the public domain
More information about the bitc-dev