Получить имя вызывающей функции в Clojure - PullRequest
5 голосов
/ 03 марта 2020

Мне нужно получить имя вызывающей функции в Clojure. Что-то вроде комбинации неявной переменной макроса &form и *file* var. Мне нужно получить или вывести имя функции из этих переменных или что-то еще, если это возможно. Должно быть указано без платформы c.

Ответы [ 2 ]

3 голосов
/ 04 марта 2020

Эта функция уже существует в библиотеке Тупело . Есть две функции, которые являются тонкими оболочками над tupelo.misc/stacktrace-info

Они возвращают карту информации о текущей функции (или ее родителе), например:

       {:ns-name     'demo.core'
        :fn-name     'add2'
        :class-name  'demo.core$add2'
        :file-name   'core.clj'
        :line-num    57
        :method-name 'invokeStatic' } 
3 голосов
/ 03 марта 2020

Я думаю, вам придется использовать спецификацию платформы c

(-> (Throwable.) .getStackTrace) в java

и

(-> (js/Error.) .-stack) в js и решить это из тех, к сожалению.

Я не думаю, что есть что-то платформенное агности c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...