[Openmcl-devel] (symbol-function function-name) no error signaled

Frank some.frank at gmail.com
Tue Jan 11 20:38:09 UTC 2011


Well I'm kinda new to LISP but I corrected the code example and put the 
SAFETY in place.

(defparameter *store* nil)

(defun (setf store) (newval)
  (setf *store* newval))

(defun foo ()
  (declare (optimize safety))
  (symbol-function '(setf store)))

(foo)  ; No error signaled!

There's still no error signaled so I assume this is a bug;  If you guys 
agree I will report this.

Thanks
#:Frank

> On Jan 11, 2011, at 14:54, Frank wrote:
>
>> Hello,
>> Just stumbled over this while I was reading the HS.  Shouldn't  
>> symbol-function signal an error if it's argument doesn't evaluate to  
>> a symbol?
>>
>> (defparameter *store* nil)
>>
>> (defun (setf store) (newval)
>> (setf *store* newval))
>>
>> (symbol-function '(setf store))  ; Shouldn't this signal an error?
>
>
>
> symbol-function "Should signal an error of type type-error if symbol  
> is not a symbol."
>
> 1.4.2 Error Terminology:
>
>> An error should be signaled
>>
>> This means that an error is signaled in safe code, and an error  
>> might be signaled in unsafe code. Conforming code may rely on the  
>> fact that the error is signaled in safe code. Every implementation  
>> is required to detect the error at least in safe code. When the  
>> error is not signaled, the ``consequences are undefined'' (see  
>> below). For example, ``+ should signal an error oftype type-error if  
>> any argument is not of type number.''
>
>
> To have safe code, you must have declared (optimize safety) at the  
> call site. If OpenMCL does not then signal an error then there is a bug.
>




More information about the Openmcl-devel mailing list