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

Re: Example?

This page is part of the web mail archives of SRFI 102 from before July 7th, 2015. The new archives for SRFI 102 contain all messages, not just those from before July 7th, 2015.

Alexey Radul wrote:
I wonder about the utility of a facility like this when it has such
weak guarantees.  Can you give an example of a situation when this
would be useful without having confidence that the arity information
is accurate at least for "most" procedures?

I believe it is useful for reporting diagnostic information such as generating good error messages. Aubrey Jaffer wrote of the Clinger proposal in 1996 that it "offers a solution to the problem of generating useful, uniform error messages for the dozen implementations supporting SLIB -- something currently lacking." The Clinger proposal makes no stronger guarantees than this proposal.

It also seems that including a means by which the programmer can
declare arity information for procedures (perhaps including system
procedures) could significantly improve the accuracy (and therefore
usefulness) of arity information, in particular about the arities of
procedures produced by procedure combinators.  In the presence of
mutation and procedures being comparable by eq?, such a mechanism
could be implemented with a (weak) eq? hash table on procedures.
(For what it's worth, declaring arity information for procedures is
semantically different from restricting the arities of procedures,
and may therefore enjoy broader use).

First of all, let me point out that procedures are not comparable by `eq?'.

I agree this would be useful. I am reluctant to expand the scope of this SRFI, however. Is this issue important to others, and is there a an interface for doing this that is supported by multiple Scheme systems? (I am trying to introduce no novel designs in this SRFI).

It would seem that if there is not a strong precedent for such facilities, it is best put off for another SRFI to take up, which of course can be designed to work with this one.