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