dorun, doall, and doseq are all for forcing lazy sequences, presumably to get side effects.
dorun– don’t hold whole seq in memory while forcing, returnnildoall– hold whole seq in memory while forcing (i.e. all of it) and return the seqdoseq– same asdorun, but gives you chance to do something with each element as it’s forced; returnsnil
for is different in that it’s a list comprehension, and isn’t related to forcing effects. doseq and for have the same binding syntax, which may be a source of confusion, but doseq always returns nil, and for returns a lazy seq.