Advertisement
Guest User

Untitled

a guest
Sep 21st, 2014
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.62 KB | None | 0 0
  1. ;;evaluate
  2. (define (evaluate exp)
  3.   (cond ((number? exp) exp)
  4.         (else (if (or (null? exp) (and (symbol? exp) (not (or (equal? exp `+) (equal? exp `-) (equal? exp `*) (equal? exp `/))))) "undefined"
  5.                   (if (list? (car exp)) (evaluate (multi-replace (car exp) (car (cdr exp))))
  6.                       (if (equal? (car exp) `+) (add (evaluate (car (cdr exp))) (evaluate (car (cdr (cdr exp)))))
  7.                           (if (equal? (car exp) `-) (minus (evaluate (car (cdr exp))) (evaluate (car (cdr (cdr exp)))))
  8.                               (if (equal? (car exp) `*) (multiply (evaluate (car (cdr exp))) (evaluate (car (cdr (cdr exp)))))
  9.                                   (if (equal? (car exp) `/) (divide (evaluate (car (cdr exp))) (evaluate (car (cdr (cdr exp)))))
  10.                                       "undefined")))))))))
  11.                                  
  12. (define (add x y)
  13.   (cond ((or (equal? "undefined" x) (equal? "undefined" y)) "undefined")
  14.         (else (+ x y))))
  15. (define (minus x y)
  16.   (cond ((or (equal? "undefined" x) (equal? "undefined" y)) "undefined")
  17.         (else (- x y))))
  18. (define (divide x y)
  19.   (cond ((or (equal? "undefined" x) (equal? "undefined" y)) "undefined")
  20.         (else (/ x y))))
  21. (define (multiply x y)
  22.   (cond ((or (equal? "undefined" x) (equal? "undefined" y)) "undefined")
  23.         (else (* x y))))
  24.          
  25. (define (multi-replace x y)
  26.   (cond ((null? x) y)
  27.         (else (multi-replace (cdr x) (replace-helper (car x) y)))))
  28.                  
  29. (define (replace-helper e exp)
  30.   (list-replace exp (car e) (car (cdr e))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement