Detecting implementations of CDR specifications...

Marco Antoniotti marcoxa at cs.nyu.edu
Tue Jun 11 08:17:53 UTC 2013


On Jun 11, 2013, at 24:47 , Pascal J. Bourguignon <pjb at informatimago.com> wrote:

> Antoniotti Marco
> <antoniotti.marco at disco.unimib.it> writes:
> 
>> Dear all,
>> 
>> following up the CDR discussion that took place aside the European
>> Lisp Symposium in Madrid a week ago, I prepared this document that
>> specifies how a CL environment can test for the "presence" of a given
>> CDR.
>> 
>> I wanted to pass it around before submitting it formally to the CDR
>> editors.
> 
> 1)
> 
> Specify what format 'n' has: the number of the CDR, represented in base
> ten without leading 0s.

Good point.

> 
> 2.1.2)
> 
> If multiple implementations of a given CDR are expected, perhaps we
> should have keywords such as: :LISP=CL :BASE-CHAR=CHARACTER or
> :WORD-SIZE=64 on *features*, so we could have:
> 
>       CDR-{n}={implementation-identifier}
> 
> 
> 
> #+CDR-{n}=com.informatimago.common-lisp.cdr-{n} 
>   (com.informatimago.common-lisp.cdr-{n}:stuff)
> 
> #+CDR-{n}=alexandria
>   (alexandria:stuff)
> 
> #-CDR-{n}
>   (do-my-own-stuff)
> 
> 
> So specify 2) that implementations of CDRs should do two things:
> 
>   (pushnew :cdr-{n} *features*)
>   (push :cdr-{n}={implementation-identifier} *features*)

This is interesting, but I am afraid it introduces a source of extra variability.  I am assuming that a CDR should represent a "state of affairs" that is already agreed upon.  In any case, I think this can go in a subsequent CDR.

> 2.1.3)
> 
> The absence of :cdr-{i} doesn't let infer anything about the present or
> absent of CDRs from *features*.  The presence of :cdr-{n} should imply
> the presence of :cdr-{i}.  What the presence of :cdr-{i} tells us, is
> the meaning of the absence of :cdr-{n}: it means the CDR is not
> implemented.
> 
> 
> So:
> 
>     #+(AND CDR-{i} CDR-{n})   should be equivalent in meaning to
>     #+CDR-{n}   and means CDR-{n} is present (definitely).
> 
>     #+(AND CDR-{i} (not CDR-{n})) means CDR-{n} is absent (definitely).
> 
>     #-(and CDR-{i} CDR-{n}) is equivalent to      
>     #+(or (not CDR-{i}) (not CDR-{n})) which is not helpful:
> 
>           - CDR-{n} could implemented, but just :cdr-{n} not on
>             *features*, which is possible since CDR-{i} is not
>             implemented.
> 
>           - CDR-{n} could be not implemented, and therefore  :cdr-{n}
>             is rightly not on *features*.
> 
> 
>     #-(and CDR-{i} (not CDR-{n})) is equivalent to      
>     #+(or (not CDR-{i}) CDR-{n}) which may mean that:
>     either
>        cdr-{i} is absent and cdr-{n} is absent (see above)
>     or cdr-{i} is absent and cdr-{n} is present, in case cdr-{n} is
>        implemented, but not cdr-{i},
>     or cdr-{i} is present and cdr-{n} is present (see first case).
>     But the condition doesn't let us distinguish.
> 
> In conclusion, the only interesting expressions are:
> 
> #+cdr-{i}                           (is-implemented     CDR-{i}) 
> #-cdr-{i}                           (is-not-implemented CDR-{i})
> 
> #+cdr-{n}                           (is-implemented     CDR-{n})
> #+(and      cdr-{i}  (not cdr-{n})) (is-not-implemented CDR-{n})
> #+(and (not cdr-{i}) (not cdr-{n})) (we-don-t-know-anything)


I take you are referring to the :CDR-i where 'i' is the one that may be assigned to the proposal.  Yes.  All you say is fine.

Cheers

--
Marco Antoniotti





More information about the pro mailing list