リストの点対表記を生成したい


リスト:

((A B (C NIL D (E NIL NIL F))))

は、点対の表記では、

((A B (C NIL D (E NIL NIL F . NIL) . NIL) . NIL) . NIL)

となります。リストから点対の表記を生成したい場合、手抜きですがsubstを利用して nil を"nil"等に置き換えることでも実現できるでしょう

(format t "~A" (subst "()" nil '((A B (C () D (E () () F))))))
;->  ((A B (C () D (E () () F . ()) . ()) . ()) . ())
;=>  NIL

(format t "~A" (subst "NIL" nil '((A B (C () D (E () () F))))))
;->  ((A B (C NIL D (E NIL NIL F . NIL) . NIL) . NIL) . NIL)
;=>  NIL