3 ms·
A key difference is that an fexpr can access its caller's dynamic environment, which obviously, must happen at runtime and cannot be reasoned about statically.
by sparkie 5y ago
A key difference is that an fexpr can access its caller's dynamic environment, which obviously, must happen at runtime and cannot be reasoned about statically.
There are plenty of opportunities to access the caller's environment once you get used to having the ability to do so. I find macros far less intuitive than I do Kernel's operatives, but as you've mentioned, this comes at the cost of performance with the inability to compile the code.