Макросы в целом составляются совсем по-другому.Макросы не являются «гражданами первого класса»: вы не можете передать их map
и т. Д., Вы не можете хранить их в переменных и apply
их в список аргументов.Изначально вам не нужно беспокоиться об этом, потому что они , очевидно, не сработают: едва заметная, трудно обнаруживаемая ошибка будет гораздо более тревожной.Если вы попытаетесь запустить
(map if [true false true false] [1 2 3 4] [-1 -2 -3 -4])
, то тот факт, что if является , а не функцией , станет очень очевидным.Просто имейте в виду, что макросы не являются функциями, и с вами все будет в порядке:)
PS: макросы (fn (fn (fn :-D) :^P) :O)