I'm glad I made you think about it at least. I consider (or *ad-i* (setq ... different then (setq *ad-i* (cond ... because of what the two statements return. Yes the boole style is less parentheses but I still preferred the COND style because I spent too much time debugging programs where the return types were not carefully accounted for. I'm not saying one is better then the other in every case, just better to acknowledge one style vs the other and their proper uses.
I've seen problem this too much (simplified).
(if (or *ad-i* (setq...
(if (setq *ad-i* (cond...
Thank you for the welcome. Ah, you guys don't need me and I don't have clever thoughts; when I first started in my career I took the SICP course and enjoyed lisp for a few years but after a while I got tired of programming only AutoCAD so I switched to C/C++. I'm just getting back into Lisp again. So I'm very, very rusty.
***
I've not seen the Kosterian approach (link/writeup?)
> (or (= (type N) 'INT)(setq N 1))
This is the type safety side of the coin I'm referring to with the boole type statements (and why I tend to avoid/limit their use). I find the (setq N (cond ... style more readable and dependable and far easier to maintain in the long run.
The above becomes
(setq N (cond
(N (eq (type N) 'INT) N) ; -If the value of `N` is set and is
; type INT, use it.
(2)) ; -Otherwise set the default value of 2.
)
which is easier to maintain and easier to read. Again, this type of type safety is a bit overkill but this demonstrates the point I was trying to make about not being diligent with return types nicely.