Literals vs Quasi-literals (Was: SRFI-108/SRFI-109 special characters)
Shiro Kawai 12 Nov 2012 07:08 UTC
Srfi-10 has number of shortcomings, but most of them
come from having the true literal status---that is,
if you want to get a user-defined object by just
(read)-ing back from its external representation, you
need to run a constructor in read anyway. One possible
approach to fix it would be introducing some formal
distinction in read phase and compile/execution phase.
If you give up the true literal behavior, you're fixing
a different problem. That is perfectly fine. I just don't
want the reader of srfi-108 to be confused that it addresses
the issues of srfi-10.
(BTW, having <extended-datum-literal> as <expression>, not
<datum>, is a wise choice to avoid another issue infecting
srfi-10, which is interference with srfi-38, e.g.
#0=#,(foo #0#)
Gauche handles this to a certain extent, but it's pretty ugly.
Again, I think naming it with 'datum' or 'literal' is misleading,
for they don't behave as pure datum nor pure literal.
Maybe <extended-constructor-expression> or something?)