[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

User-Visible Declarations and Proclamations

    Date: Mon, 18 May 87 12:04 EDT
    From: MURRAY%cs.umass.edu@RELAY.CS.NET
    Since the code now works on both sequences and lists, it must test
    at run-time what kind of argument it has (similiar to the MAP-INTO code).
    This could be avoided if the type was declared to be a list or vector.

    I would like to solicit discussion on the possibility of providing one
    or more functions or variables in Common Lisp to provide information 
    about any declarations or proclaimations that are in effect.   

    Previous mail by a number of people has indicated a desire to be able to
    determine whether a variable has been proclaimed special (e.g. DEFVAR).
    This is another example of the general problem.

    For type declarations, something like (DECLARED-RESULT-TYPE Form) --> Type  
    would allow macro-expanders to possibly generate much more efficient code.  
    I imagine all systems with a compiler have this kind of a function in one
    form or another.  A system could always just return T.

    What about defining the global variables *speed*, *safety*, and
    *compiler-speed* to be bound to their proclaimed values?

    Another possibility is to have one general function that takes as arguments
    what kind of information is requested.

This sort of thing would probably be useful, although I think it's clear that
it needs to be thought out a lot more carefully before standardizing on anything.
However, I don't think you need it for your particular application.  Just expand
into a TYPECASE and rely on the compiler to constant-fold it if the type tests
have known results due to declarations.  Perhaps not all compilers do this
optimization, but it's a reasonable optimization to expect.