Subject: bug#16363: interactive use subject to compiler limitations

From: Zefram <[email-masked]>
Date: Wed, 15 Jan 2014 21:26:29 +0000

Mark H Weaver wrote:
>that all code and literals be serialized, there's no sane way to support
>the semantics you seem to want.

We've addressed the semantics themselves on the other ticket, #16362.
Accepting that the compiler semantics are preferred, there's still a
problem in the scope of my intent for this ticket #16363: that interactive
behaviour doesn't match the behaviour of a script.  The mismatch is a
problem for development regardless of which set of semantics is correct.

As I mentioned in passing on the other ticket, you could fix this by
enforcing the compiler restrictions in interpreting situations.  A start
on this would be for read-eval to refuse to accept any object without a
readable print form, such as the procedure in my example on this ticket.
For objects that do have a readable print form, such as the pair in
#16362, it could break the referential identity by copying the object,
as if by printing it to characters and reading it back.

If, on the other hand, you actually intend for the compiler and
interpreter to have visibly different semantics, there's still the
problem that the REPL approaches that difference in a different way from
script execution.  In that case, either the REPL should perform the same
fallback that script execution does (as I originally suggested on this
ticket), or script execution should not perform the fallback.

-zefram