loopのby句がよくわかりません

(loop for i in (list 1 2 3 4) by #'cdr collect i)
(loop for i in (list 1 2 3 4) by #'cddr collect i)
(loop for i in (list 1 2 3 4) by #'cdddr collect i)
(loop for i in (list 1 2 3 4) by #'cddddr collect i)

それぞれ (1 2 3 4) (1 3) (1 4) (1) が返るのですが、具体的にはどのようなことをしているのでしょうか?