On Sun, Mar 24, 2013 at 7:19 PM, Rudolf Schlatte <rudi@constantly.at> wrote:

On Mar 24, 2013, at 13:55, Erik Huelsmann <ehuels@gmail.com> wrote:

Hi all,


What is the current status of this problem?
(I think the ticket #230 might be relevant to this problem.)
My current workaround is to make truly-the a macro.

CL-USER> (defmacro truly-the (type value)
           `(the ,type ,value))
TRULY-THE
CL-USER> (ql:quickload 'screamer)
To load "screamer":
  Load 1 ASDF system:
    screamer
; Loading "screamer"
[package screamer]................................
[package screamer-user].............
(SCREAMER)
CL-USER> (lisp-implementation-type)
"Armed Bear Common Lisp"
CL-USER> (lisp-implementation-version)
"1.0.1-svn-13750-13751"
CL-USER>


To cut a long story short: the problem hasn't progressed.

However, your analysis is entirely correct: defining a macro for the TRULY-THE form would indeed by the short term solution. My thoughts would be to remove the special form longer term. Even though we have special-purpose compilation support for it, I don't see benefits in keeping it around. It's supposed to allow increased performance for compiled programs. So, upon removal, we probably need to verify that the performance degradation is small enough.

Supplying a macro for a non-standard special form is the right solution, regardless of whether we keep TRULY-THE; sbcl does the same, and they won't ever eliminate TRULY-THE, I think.


Added a macro expansion to macros.lisp for TRULY-THE in r14447. Now thinking where to do the same for THREADS:SYNCHRONIZED-ON and JVM:WITH-INLINE-CODE... (since macros.lisp only contains macros in the CL and SYS packages).

Bye,

Erik.