I have to reverse the elements of a simple (single-dimension) list. I know there's a built-in reverse function but I can't use it for this.

Here's my attempt:

```
(defun LISTREVERSE (LISTR)
    (cond
        ((< (length LISTR) 2) LISTR) ; listr is 1 atom or smaller
        (t (cons (LISTREVERSE (cdr LISTR)) (car LISTR))) ; move first to the end
    )
)

```

Output pretty close, but is wrong.

```
[88]> (LISTREVERSE '(0 1 2 3)) 
((((3) . 2) . 1) . 0)

```

So I tried to use `append` instead of `cons`:

```
(t (append (LISTREVERSE (cdr LISTR)) (car LISTR)))

```

But got this error:

```
*** - APPEND: A proper list must not end with 2

```

Any help?