Mam zadanie napisac w Lispie funkcje, ktora obliczy obwod kola na podstawie jego pola. Ponadto, funkcja ma zwracac pusta liste, jesli dane wejsciowe sa ujemne lub nie sa liczba. Napisalem cos takiego:
(defun obwod (p)
(if (or (< p 0) (not (numberp p))) '()
(if (> p 0) (* 2 pi (sqrt (/ p pi))))
)
)
Liczy mi obwod dla dodatniej liczby, zwraca NIL dla ujemnej, ale jak podaje litere to jest blad. W drugiej linijce probuje wykorzystac "numberp", ktora zwraca prawde jesli argument jest liczba, ale nie chce zeby to byla liczba, wiec neguje, ale mimo to przy wklepywaniu np. (obwod n) wyskakuje blad z trescia ze "n nie ma wartosci" czy jakos tak. Wie ktos jak to zrobic zeby dzialalo?