I'm new to `lisp` and trying to write a recursive function that returns minimum number from a list. It also wants to detect atom. The following code returns error:

```
(defun minFromList (l)     
  (cond ((null l) nil) ; Causes error shown below
 ;  (cond ((null l) )   ; Causes the same error 
 ;  (cond ((null l) 0)  ; It causes always 0 to be the final return val.
        ((numberp l) l)
    ((numberp (car l)) (min (car l) (minFromList(cdr l))))
    ((listp (car l)) (min (minFromList (car l)) (minFromList (cdr l))))
    (t nil)       ; if all condition doesn't hold just return nil.
  )
)

```

Error:

```
*** - MIN: NIL is not a real number

```

Apparently the problem lies in where it returns nil/0 when the given list is null. What's possible workarounds? Thank you.

Environment) Ubuntu 11.10, clisp 2.49

---

Update) Although I already picked up [this](https://stackoverflow.com/a/9335746/577001) as the answer, I welcome if there are other ways especially w/o making new functions if any.

Here's the simplest code I made inspired by the chosen answer.

```
(defun minNum (a b)
  (cond ((null a) b)
    ((null b) a)
    (t (min a b)))
)

```