Рекурсивно проверять наличие атомов в списке

Я пытаюсь написать небольшую рекурсивную программу, которая проверяет список и возвращает t , если каждый элемент равен атом. У меня проблема в том, что когда функция получает пустой список, она возвращает t вместо желаемого результата nil . Я не могу придумать способ, чтобы он возвращал nil для изначально пустого списка и по-прежнему работал правильно рекурсивным образом.

(defun only-atoms (in)
  (if (null in)
    t
    (and (atom (first in)) (only-atoms (cdr in)) )
  )
)
5
задан Bort 19 April 2011 в 06:00
поделиться