Для случаев, когда кто-то уже назначил DownValues, связанный с именем 'a', существует ли приемлемый способ заблокировать присвоение OwnValues тому же имени? (Первоначально я сталкивался с
Вот чего я хочу избежать:
Remove[a];
a[1] := somethingDelayed
a[2] = somethingImmediate;
DownValues[a]
a[1]
a[2]
Возврат ...
{HoldPattern[a[1]] :> somethingDelayed,
HoldPattern[a[2]] :> somethingImmediate}
somethingDelayed
somethingImmediate
А теперь, если бы мы оценили:
a = somethingThatScrewsUpHeads;
(* OwnValues[a] above stored in OwnValues *)
a[1]
a[2]
Мы получили ...
somethingThatScrewsUpHeads[1]
somethingThatScrewsUpHeads[2]
Есть ли простой / гибкий способ предотвратить OwnValues для любого Name в DownValues? (Дайте предположение ... это возможно, но будет снижение производительности?)