Discoverability of CDR implementations (pre-submission discussion)

Richard M Kreuter kreuter at progn.net
Mon Jun 24 21:25:51 UTC 2019


Hello,

I have three questions (of which number 2 is most important) and one
comment about the proposal.

| CDR-defined symbols
|  
| For every supported CDR n. XX in the system, there SHALL be a package
| with name or nickname CDR-XX.

1. What if the user want loads two different libraries that each
provided the interface of one CDR document?

Those two libraries can't both be loaded without package name or
nickname conflicts.

| Every symbol defined in the CDR n. XX and implemented in the system
| according to the CDR SHALL be available in the CDR-XX package as an
| external symbol.

(Comment) I'd suggest stating that the CDR-XX package corresponding to a
CDR XX document make external all *and only* the symbols described in
the document, so that a user of such a package would know the
consequences of calling USE-PACKAGE on the package.

| PROBE-CDR (CDR-NUMBER): a generic function
| 
| CDR-NUMBER: an integer, specifying the CDR number.
| 
| Return value: any true value if code intended to be a compliant
| implementation of the CDR with the number CDR-NUMBER is available. In
| this case the implementation of the CDR SHALL be fully loaded (and the
| corresponding symbol added to the *FEATURES* list). If no
| implementation is available, NIL is returned.

2. Is it your intention that a call to PROBE-CDR merely checks whether
the specified CDR's functionality is already available in the Lisp
instance, or that PROBE-CDR might load some files/modules/systems or
otherwise change the state of the Lisp instance to arrange that the
functionality of CDR-NUMBER becomes available?

I ask because the sentence "In this case the implementation of the CDR
SHALL be fully loaded (and the corresponding symbol added to the
*FEATURES* list)" is vague to me: I can read it either as a static
description of the circumstances under which PROBE-CDR returns true
rather than false, or as a description of actions to be performed by
PROBE-CDR.

| CDR implementations MAY be provided by third-party libraries. Such
| libraries SHALL define [m]ethods of PROBE-CDR function corresponding
| to provided CDRs.

3. Similar to my first question, what should happen if two libraries
want to provide the same CDR? They'll clobber each other's PROBE-CDR
methods.

Thanks,
Richard



More information about the cdr-discuss mailing list