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

Re: Revised straw proposal for heuristic info

   Date: Mon, 13 May 1996 15:38:34 +0000
   From: William D Clinger <will@ccs.neu.edu>

   Two people (one privately) have pointed out an oversight in
   my description of PROCEDURE-ARITY: the integers in a list
   should not be required to be exact.  Here is a correction:

Our discussion of procedure-arity is more contentious than I think it
deserves.  Knowing the arity of a procedure gives no assurance that
the procedure will not signal an error when called.  Let me suggest
that we instead replace it with the more informative:

(procedure-formals _proc_)

  Returns a formal arguments list suitable as formals in a lambda
  expression.  If the result is #F, then no information is available.

  The returned formals list should be compatible with the intended
  invocation of the procedure _proc_; ie. `procedure-formals' of the
  built-in procedure `car' would not be `(real_1 real_2 . real_3)'.
  It is an error to modify a objects returned by `procedure_formals'.

  (procedure-formals car)   ==> (list)

  (procedure-formals write) ==> (object . optional-port)


* Procedure-formals (just returning #f) is compatible with R4RS.

* Returning a formals list (instead of numbers) conveys nearly as much
  arity information as the proposed arity functions.

* The variable names in the formals list can succinctly convey
  information about arguments to the procedure; This information need
  not then be replicated in the procedure-documentation.

* The formals list can be used in the construction of trace
  procedures and environment inspectors.

* The formals list together with the procedure-name comprise a large
  part of the customary information in error and warning messages.