У меня есть группа числовых функций в Clojure, что я хочу проверить аргументы для. Существует множество типов аргументов, ожидаемых функциями, таких как положительные целые числа, проценты, последовательности чисел, последовательности ненулевых чисел и т.д. Я могу проверить аргументы любой отдельной функции:
- Написание кода проверки в функция.
- Написание общего функции, передавая его аргументы и ожидаемые типы.
- Написание макроса общего назначения, передавая ему аргументы и ожидаемые типы.
- Другие, о которых я не думал.
Некоторые Lisp код Ларри Хантера - хороший пример №3. (Ищите макрос test-variables
.)
Моя интуиция заключается в том, что макрос более уместен из-за контроля над оценкой и возможности делать вычисления времени компиляции, а не делать все это во время выполнения. Но я не столкнулся с прецедентом для кода, который я пишу, который, кажется, требует его. Мне интересно, стоит ли писать такой макрос.
Любые предложения?