If you measured by uses of each type of operator, the role of macros would be even larger. You often write a function that you only call once, but you wouldn't do that with a macro.
Here's the last piece of code I wrote. I wrote it because I was curious to see what colors users had chosen for the top bar.
(defopa topcolors req
(minipage "Topcolors"
(tab
(each user (sort (compare > [karma _])
(keep [aand (uvar _ topcolor)
(isnt it (hexrep orange))]
(keys profs*)))
(tr (td (link user (user-url user)))
(tdcolor (hex>color (uvar user topcolor)) (hspace 30)))))))
There are 10 macros used here: defopa, minipage, tab, each, karma, aand, uvar, tr, td, tdcolor.Actually it's a hack that karma is a macro. I wanted it to be settable and was too lazy to define a setter, so I just defined it as a macro. It should be a function, and I should be able to say just (compare > karma).