Мне нужна функция, которая принимает имя символа в виде строки и возвращает значение, определяющее, уже ли этот символ определен. Функция ValueQ
близка, но возвращает False для имен функций. Кроме того, он принимает символы, а не строки.
Примеры:
defined["N"] --> True (predefined function N)
defined["x"] --> False
x = 7;
defined["x"] --> True (x is now defined)
defined["7"] --> True (7 is a number)
f[x_] := 2x
defined["f"] --> True (f has DownValues)
g[x_][y_] := x+y
defined["g"] --> True (g has SubValues)
PS: спасибо Pillsy за указание на необходимость проверки как DownValues, так и SubValues.