| Paste number 30792: | Try "cddr" instead of "caddr"! |
| Pasted by: | Wolfbone |
| When: | 3 years, 8 months ago |
| Share: | Tweet this! | http://paste.lisp.org/+NRC |
| Channel: | None |
| Paste contents: |
(define (calculate expr)
(cond ;; self-evaluating object?
((number? expr)
expr)
;; 1 number in a list?
((= (length expr)
1)
(car expr))
;; compound expression?
(else
(math-eval-combo expr))))
(define (math-eval-combo expr)
(let ((operator-name (cadr expr))
(arg1 (calculate (car expr)))
(arg2 (calculate (caddr expr)))) ; <--- Here!
(cond ((eq? operator-name '+)
(+ arg1 arg2))
((eq? operator-name '-)
(- arg1 arg2))
((eq? operator-name '*)
(* arg1 arg2))
((eq? operator-name '/)
(/ arg1 arg2))
(else
(error "Invalid operation in expr:" expr)))))This paste has no annotations.