2 ms·
> inventing your own little dialect of the language which is opaque to any 3rd party reading your code unless they take the time to unravel your macros. I mean
by hyperpallium 9y ago
> inventing your own little dialect of the language which is opaque to any 3rd party reading your code unless they take the time to unravel your macros.
I meant that a whole bunch of specialzed functions can also be a dialect, which are opaque unless one takes the trouble to look into them. You can write very confusing code, unless it matches up closely to a domain (and even then, you need to be on top of the domain). Of course, the "unraveling" is easier, (and less literal) than for macros.
I was just trying to say it's a difference in degree not in kind - if you measure in terms of power and usability.
I take your point that it's not just syntax, but differences in (basic) guarantees, so there's less ability to treat it as a black box (information hiding within a module). But any module (e.g. a fn) can behave differently from how you expect.
tl;dr macros vs fn is a difference in degree, in terms of outcome (i.e. confusion).