Я новичок в обучении Clojure. Я начал пару месяцев назад. Я пытаюсь изучить макросы.
Вначале я получил путаное понимание разницы между макросами и функциями более высокого порядка в Clojure, поскольку функция более высокого порядка могла принимать lambdas и выполнять одно из них, сколько раз оно требовалось на основе любых условий и фильтра.
Итак, я разместил question с простым примером относительно этого в StackOverflow. Я получил свои сомнения от ответа.
Это то, что я понял,
- Макросы не будут оценивать все аргументы, отличные от функций, для оценки тела.
- Макросы могут быть выборочными в отношении того, что оценивать, а что нет и как преобразовать одну часть кода в другую, используя синтаксис цитаты, unquote и splicing.
- Затем вычисляется окончательный код, который выходит из макроса.
Итак, мой вопрос: как он отличается от директив препроцессора и макросов, используемых в C? Какая сила макросов Lisp/Clojure дает разработчикам, которые полностью отсутствуют и часто используются широко.