Advertisement
Guest User

Untitled

a guest
Sep 16th, 2014
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.25 KB | None | 0 0
  1. (define (eval exp env)
  2.   (cond ((self-evaluating? exp) exp)
  3.         ((variable? exp) (lookup-variable-value exp env))
  4.         ((quoted? exp) (text-of-quotation exp))
  5.         ((assignment? exp) (eval-assignment exp env))
  6.         ((definition? exp) (eval-definition exp env))
  7.         ((if? exp) (eval-if exp env))
  8.         ((lambda? exp)
  9.          (make-procedure (lambda-parameters exp)
  10.                          (lambda-body exp)
  11.                          env))
  12.         ((begin? exp)
  13.          (eval-sequence (begin-actions exp) env))
  14.         ((cond? exp) (eval (cond->if exp) env))
  15.         ((application? exp)
  16.          (apply (eval (operator exp) env)
  17.                 (list-of-values (operands exp) env)))
  18.         (else
  19.          (error "Unknown expression type -- EVAL" exp))))
  20.  
  21. (define (apply procedure arguments)
  22.   (cond ((primitive-procedure? procedure)
  23.          (apply-primitive-procedure procedure arguments))
  24.         ((compound-procedure? procedure)
  25.          (eval-sequence
  26.            (procedure-body procedure)
  27.            (extend-environment
  28.              (procedure-parameters procedure)
  29.              arguments
  30.              (procedure-environment procedure))))
  31.         (else
  32.          (error
  33.           "Unknown procedure type -- APPLY" procedure))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement