11
$\begingroup$

Is it possible to assign custom attributes to symbols and check them later?

SetAttributes[a, b]

says

Attributes::attnf: b is not a known attribute.
$\endgroup$

1 Answer 1

14
$\begingroup$

No, I do not believe it is. As the documentation for your error message says:

The attributes available in each version of Mathematica are fixed and cannot be changed.

The system attributes are low level properties that fundamentally change the evaluation of symbols. I think it makes sense that these are not mixed with high-level user constructs, even though at times that would be quite convenient.

For an alternative remember that you can attach Options to a symbol, e.g.:

Options[a] = {"Attributes" -> {"b"}};

OptionValue[a, "Attributes"]
{"b"}

You could also use a single DownValues rule such as:

a["Attributes"] = {"b"};

a["Attributes"]
{"b"}
$\endgroup$
4
  • $\begingroup$ Thanks. But how to change individual option of a symbol? $\endgroup$
    – Suzan Cioc
    Jan 19, 2013 at 10:14
  • $\begingroup$ Ah, I found SetOptions function. $\endgroup$
    – Suzan Cioc
    Jan 19, 2013 at 10:15
  • $\begingroup$ @Suzan What do you mean? It is simple to replace the list of options with either method shown, e.g. SetOptions[a, "Attributes" -> {"c", "d"}]; or a["Attributes"] = {"c", "d"}; Are you asking for a way to individually append or remove these values as SetAttributes and ClearAttributes do? I could add that to my answer if you have trouble crafting it yourself. $\endgroup$
    – Mr.Wizard
    Jan 19, 2013 at 10:17
  • $\begingroup$ @Suzan Thanks for the Accept, but please consider waiting a while first as someone else may have an answer you like better if you do not discourage them from reading the question. $\endgroup$
    – Mr.Wizard
    Jan 19, 2013 at 10:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.