2009-10-26 21 views
13

Por xkcd site hoy, el siguiente apareció como una broma en un lenguaje de script = < "esquema" > etiqueta¿Qué hace este código xkcd?

así que lo que hace el código siguiente DO/representan?

(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

gustó la onhover – Tom

+0

alguna posibilidad de encontrar el original (enlace permanente) a este xkcd-página? –

Respuesta

20

Es esencialmente un intérprete simple, si se asume que todos los métodos necesarios se rellenan.

+12

es de SICP, en su mayoría, 4.1 El Evaluador de Metacircular –

+1

Para aclarar: es exactamente el código de SICP 4.1 a excepción del mensaje de error. – Bill