Kernel.SpecialForms are special. They are not expanded like regular macros, but instead understood by the compiler itself and transformed into themselfs.
If you consider macros beeing molecules, than specialforms are the atoms those molecules are made from.
As stated above with is not a macro, it’s a special form.
Specifically macro’s are internally still just functions, and thus they have an arity. Special forms like with and for are multi-arity (which I really don’t like, but eh), so by their design you have to do things like:
with(
x <- blah(),
y <- blorp(),
z <- bloop()
) do
x + y + z
end
Notice how you have inconsistency with , on the trailing arguments and all. If this were a macro it would probably instead have been implemented as:
with do
x <- blah()
y <- blorp()
z <- bloop()
x + y + z
end
Or maybe something like:
with do
x <- blah()
y <- blorp()
z <- bloop()
after
x + y + z
end
Or so, both of which I find far more readable and less breakable than the version that uses ,'s everywhere.
And yes, someone can and has made such a macro. ^.^