User Tools

A PCRE internal error occured. This might be caused by a faulty plugin

====== Function REMPROP ====== ====Syntax==== * **remprop** //symbol indicator// → //generalized-boolean// ====Arguments and Values==== * //symbol// - a //[[CL:Glossary:symbol]]//. * //indicator// - an //[[CL:Glossary:object]]//. * //generalized-boolean// - a //[[CL:Glossary:generalized boolean]]//. ====Description==== **remprop** removes from the //[[CL:Glossary:property list]]// of //symbol// a //[[CL:Glossary:property]]// with a //[[CL:Glossary:property indicator]]// //[[CL:Glossary:identical]]// to //indicator//. If there are multiple //[[CL:Glossary:properties]]// with the //[[CL:Glossary:identical]]// key, **remprop** only removes the first such //[[CL:Glossary:property]]//. **remprop** returns //[[CL:Glossary:false]]// if no such //[[CL:Glossary:property]]// was found, or //[[CL:Glossary:true]]// if a property was found. The //[[CL:Glossary:property indicator]]// and the corresponding //[[CL:Glossary:property value]]// are removed in an undefined order by destructively splicing the property list. The permissible side-effects correspond to those permitted for **[[CL:Macros:remf]]**, such that: <blockquote> (remprop //x// //y//) ≡ ([[CL:Macros:remf]] ([[CL:Functions:symbol-plist]] //x//) //y//) </blockquote> ====Examples==== <blockquote> ([[CL:Macros:defparameter]] *test* ([[CL:Functions:make-symbol]] "PSEUDO-PI")) <r>#:PSEUDO-PI </r> ([[CL:Functions:symbol-plist]] *test*) <r>() </r> ([[CL:Macros:setf]] ([[CL:Functions:get]] *test* 'constant) [[CL:Constant Variables:t]]) <r>[[CL:Constant Variables:T]] </r> ([[CL:Macros:setf]] ([[CL:Functions:get]] *test* 'approximation) 3.14) <r>3.14 </r> ([[CL:Macros:setf]] ([[CL:Functions:get]] *test* 'error-range) 'noticeable) <r>NOTICEABLE </r> ([[CL:Functions:symbol-plist]] *test*) <r>(ERROR-RANGE NOTICEABLE APPROXIMATION 3.14 CONSTANT [[CL:Constant Variables:T]])</r> ([[CL:Macros:setf]] ([[CL:Functions:get]] *test* 'approximation) [[CL:Constant Variables:nil]]) <r>[[CL:Constant Variables:NIL]] </r> ([[CL:Functions:symbol-plist]] *test*) <r>(ERROR-RANGE NOTICEABLE APPROXIMATION [[CL:Constant Variables:NIL]] CONSTANT [[CL:Constant Variables:T]]) </r> ([[CL:Functions:get]] *test* 'approximation) <r>[[CL:Constant Variables:NIL]] </r> (remprop *test* 'approximation) <r>//[[CL:Glossary:true]]// </r> ([[CL:Functions:get]] *test* 'approximation) <r>[[CL:Constant Variables:NIL]] </r> ([[CL:Functions:symbol-plist]] *test*) <r>(ERROR-RANGE NOTICEABLE CONSTANT [[CL:Constant Variables:T]]) </r> (remprop *test* 'approximation) <r>[[CL:Constant Variables:NIL]] </r> ([[CL:Functions:symbol-plist]] *test*) <r>(ERROR-RANGE NOTICEABLE CONSTANT [[CL:Constant Variables:T]]) </r> (remprop *test* 'error-range) <r>//[[CL:Glossary:true]]// </r> ([[CL:Macros:setf]] ([[CL:Functions:get]] *test* 'approximation) 3) <r>3 </r> (symbol-plist *test*) <r>(APPROXIMATION 3 CONSTANT [[CL:Constant Variables:T]]) </r> </blockquote> ====Side Effects==== The //[[CL:Glossary:property list]]// of //symbol// is modified. ====Affected By==== None. ====Exceptional Situations==== Should signal an error of type type-error if //symbol// is not a //[[CL:Glossary:symbol]]//. ====See Also==== * **[[CL:Macros:remf|Macro REMF]]** * **[[CL:Functions:symbol-plist|Function SYMBOL-PLIST]]** ====Notes==== //[[CL:Glossary:number|Numbers]]// and //[[CL:Glossary:character|characters]]// are not recommended for use as //indicators// in portable code since **remprop** tests with **[[CL:Functions:eq]]** rather than **[[CL:Functions:eql]]**, and consequently the effect of using such //indicators// is //[[CL:Glossary:implementation-dependent]]//. Of course, if you've gotten as far as needing to remove such a //[[CL:Glossary:property]]//, you don't have much choice - the time to have been thinking about this was when you used **[[CL:Macros:setf]]** of **[[CL:Macros:get]]** to establish the //[[CL:Glossary:property]]//. \issue{PLIST-DUPLICATES:ALLOW} \issue{REMF-DESTRUCTION-UNSPECIFIED:X3J13-MAR-89}