4 ms·
Unpopular opinions, CLVII: Sturgeon's law applies to macros. Squared.
by B1FF_PSUVM 7y ago
Unpopular opinions, CLVII: Sturgeon's law applies to macros. Squared.
- RHSeeger 7y agoBeing able to write new control structures is something I miss in most languages. Lisp macros make it much easier to do that. Tcl uplevel and upvar are another way to approach it.
- LessDmesg 7y agoCurious: what kind of new control structures do you miss in other languages?
- bjoli 7y agoDelimited gotos. Many lacks proper looping constructs. CL has a package a macro that gives you a limited version delimited continuations which are handy for some situations.
- RHSeeger 7y agoA good example would be a case switch, that ran the first block that evaluated to true (lisp has this, many languages don't). That being said, custom control structures can abstract away some things.
- stevelosh 7y agoThis would save me literally thousands of lines of code at my day job: (defmacro ?= (symbol-or-symbols expr) (let* ((symbols (etypecase symbol-or-symbols (cons symbol-or-symbols) (symbol (list symbol-or-symbols)))) (tmps (loop :for s :in symbols :collect (gensym (symbol-name s)))) (err (gensym "ERROR"))) `(multiple-value-bind (,@tmps ,err) ,expr (if (not (null ,err)) (return ,err) (setf (values ,@symbols) (values ,@tmps))))))
- comex 7y ago0.9^2 = 0.81, so you're saying that only 81% of macros are crap? :)
- a1369209993 7y agoI think they meant squaring the fraction of good macros: 0.1^2 = 0.01, so 99% are crap. As someone who likes and uses cpp quite a bit, I think, if that isn't true anymore, it's only because most of the people who would have written crap macros have moved to writing python or javascript or whatever instead of C or C++.