Common Lispの自作ユーティリティnths

Common Lispで複雑にネストされたリストから、深く埋め込まれた目的の要素を取り出すのに使うのに便利かなと思って書いてみた。

; 一つのリストに対してnthを複数回繰り返して要素を取り出す時に使う
;第1引数は対象リスト
;第2以下の引数はnthを使う場合に指定する第1引数(数値)を指定
(defun nths (lst1 &rest lst2)
  (labels ((rec (list1 list2)
                (if (null list2) 
                  list1
                  (rec (nth (car list2) list1) (cdr list2)))))
    (rec lst1 lst2)))

熟練者になるとこういうのを使わなくてもサッと取り出せるのかな・・・