As of this writing, there are 3~ ways to define a macro
Type macros are being removed so won't be covered here; all focus is on macro functions and annotations