# Package automated way of ReadProtecting all symbols

My template for building packages has, at the end, the following expression that automatically ReadProtects all symbols defined in my pack:

ToExpression[Names["pack*"], InputForm, SetAttributes[#, {ReadProtected(*,Locked*)}] &]


It works fine, with the exception of cases where I define a constant, like for example: iso=3; This produces the following message (when loading the package):

SetAttributes::sym: Argument 3 at position 1 is expected to be a symbol. >>


Can the automated expression that sets ReadProtected be changed to correct this behavior?

-
add comment

## 1 Answer

My guess would be this:

ToExpression[
Names["pack*"],
InputForm,
Function[sym,SetAttributes[sym, {ReadProtected(*,Locked*)}],HoldFirst]
]


The problem is that functions defined with # - & notation do not hold their arguments.

-
Works fine, thank you! –  P. Fonseca Apr 30 '12 at 13:25
add comment