On 9/1/16 Sep 1 -7:40 PM, Faré wrote: >> For the user, the important information is "why is this not supported?" >> > and that has to do with static information the programmer should supply, >> > rather than with information about what the current information is. >> > > My contention is that the programmer cannot supply this information. > Certainly not in a maintainable way.
I'm sorry, I simply do not understand this claim. Here is my counter-example, in your "handwriting," as it were: #-(or abcl allegro clasp clisp clozure cmucl cormanlisp digitool ecl gcl genera lispworks mkcl sbcl scl xcl) (error "~S not implemented on ~S" 'delete-empty-directory (implementation-type))) ; genera This seems to be exactly an example of what I'm claiming, and the error call you wrote could be replaced with (error 'unsupported-functionality :functionality 'delete-empty-directory :reason "not supported on ~a" :reason-args (list (implementation-type))) [Actually, I see that the comment here must be wrong, since it conflicts with the #- form....] But I hope you get my drift. Similarly, I have often written a first draft of a system using Allegro's EXCL.OSI filesystem utilities, and then replaced it with a portable version later. (error 'unsupported-functionality :functionality <foo> :reason " relies on ACL-specific mktemp function.") There are lots of systems out there, at least some of whose functionality relies on other implementation-specific information. In that case yes, I as a programmer definitely DO know that it is not supported because I didn't bother to use other than Allegro-specific functions. Best, r