I'm new in Common Lisp. And recently started to learn it. And I have a little problem how to call one function in another? I have a function mrg and function my_eval. And how call this function mrg in my_eval by typing this for example (print (my_eval '(mrg '(1 1 2 1 2 1 3) '(5 3 3 1 2 2)))). I tried but I had some errors like it's not a real number or undefined function A. Please help me.
This is my code:
(defun mrg (w v)
(merge 'list (sort w #'<) (sort v #'<) #'<))
(defun my_eval (A)
(cond
((atom A) A)
((equal 'car (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)))))
((equal 'cdr (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)))))
((equal 'atom (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)))))
((equal 'cons (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)) (my_eval (caddr A)))))
((equal 'list (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)) (my_eval (caddr A)))))
((equal 'equal (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)) (my_eval (caddr A)))))
((equal '* (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)) (my_eval (caddr A)))))
((equal '/ (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)) (my_eval (caddr A)))))
((equal '+ (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)) (my_eval (caddr A)))))
((equal '- (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)) (my_eval (caddr A)))))
((equal '= (car A))
(let ((A A)) (funcall (car A) (my_eval (cadr A)) (my_eval (caddr A)))))
((equal 'mrg ))
(T A)))
(print (my_eval '(mrg '(1 1 2 1 2 1 3) '(5 3 3 1 2 2))))