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

Re: Constant-Function



    Date: Thu, 12 May 88 21:36:45 PDT
    From: Jon L White <edsel!jonl@labrea.stanford.edu>

    The very question as to whether such a declaration would be at all useful,
    as well as the degree of its utility, depends on how an implementation does 
    function-to-function interfaces.  Few people in the common lisp community 
    have been desirous of imposing particular Lisp-system implementation 
    techniques into the portable standard; thus it's not surprising that few 
    are interested in standardizing on implementation specific tricks. 

	[...]

    Perhaps "block compilation" is a better line of pursuit since it has some 
    implications for "modularity" as well as potential for code efficienty.

I am getting the sneaking suspicion that what these various
proposals boil down to is the desire for super-compilation, a
subject that has been much on my mind lately.

A simple example would be:

(defun foo (bar)
	(mapcar #'bletch bar))

where we know that bletch is purely functional, that is, it's
output is soley determined by it's arguments, and has no
internal state.

We could then compile (third (foo mumble)) into (bletch (third
mumble)) which simply takes advantage of our "understanding"
of properties of foo and bletch.

This sort of thing seems to be an active research topic, and I
don't think it should have a bearing on a CL standard at this
time.

For a reference: see "The Concept of a Supercompiler",
Turchin, Valentin F. in ACM Transaciont on Programming
Languages and Systems, July 1986, V8 N3.

----
Brad Miller		U. Rochester Comp Sci Dept.
miller@cs.rochester.edu {...allegra!rochester!miller}