2009-10-26 18 views
13

Auf der xkcd site heute erschien die folgenden als Witz in einem < script language = „Schema“ > TagWas macht dieser xkcd-Code?

so was macht der folgende Code kann/repräsentieren?

(define 
    (eval exp env) 
    (cond ((self-evaluating? exp) exp) 
    ((variable? exp) 
     (lookup-variable-value exp env)) 
    ((quoted? exp) 
     (text-of-quotation exp)) 
    ((assignment? exp) 
     (eval-assignment exp env)) 
    ((definition? exp) 
     (eval-definition exp env)) 
    ((if? exp) 
     (eval-if exp env)) 
    ((lambda? exp) 
     (make-procedure 
     (lambda-parameters exp) 
     (lambda-body exp) env)) 
    ((begin? exp) 
     (eval-sequence (begin-actions exp) env)) 
    ((cond? exp) 
     (eval (cond->if exp) env)) 
    ((application? exp) 
     (apply (eval (operator exp) env) 
     (list-of-values (operands exp) env))) 
    (else (error "Common Lisp or Netscape Navigator 4.0+ Required" exp)))) 
+0

der onHover – Tom

+0

Jede Chance auf den ursprünglichen mochte (permalink) zu dieser xkcd-Seite? –

Antwort

20

Es ist im Wesentlichen ein einfacher Dolmetscher, wenn Sie davon ausgehen, dass alle erforderlichen Methoden ausgefüllt sind.

+12

ist es von SICP, meistens, 4.1 Der Metacircular Evaluator –

+1

Zur Verdeutlichung: Es ist genau der SICP 4.1-Code mit Ausnahme der Fehlermeldung. – Bill