Функция Stack
сделает почти то, что вы хотите, предоставив список «тегов» (для ваших целей прочитайте «функции»), которые находятся в стеке вызовов. Это не пуленепробиваемый, потому что существуют другие функции, такие как StackBegin
и StackInhibit
, но они очень экзотичны с самого начала.
В большинстве случаев Stack
возвращает символы, которые обозначают функции, которые оцениваются. Чтобы выяснить, из какого контекста эти символы, вы можете использовать функцию Context
, которая настолько близка, насколько вы можете выяснить, к какому пакету они относятся. Это требует некоторой осторожности, поскольку символы могут быть добавлены в пакеты динамически (через Get
, Import
, ToExpression
или Symbol
), и их можно переопределить или изменить (например, с помощью новых правил оценки) в другие пакеты также.