Sfoglia il codice sorgente

tweaks to R7 interpreter

Jeremy Siek 9 anni fa
parent
commit
37f40e72b8
1 ha cambiato i file con 5 aggiunte e 1 eliminazioni
  1. 5 1
      book.tex

+ 5 - 1
book.tex

@@ -5871,6 +5871,10 @@ Figure~\ref{fig:interp-R7}.
 
 \begin{figure}[tbp]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
+(define (get-tagged-type v) (match v [`(tagged ,v1 ,ty) ty]))
+
+(define (valid-op? op) (member op '(+ - and or not)))
+
 (define (interp-r7 env)
   (lambda (ast)
     (define recur (interp-r7 env))
@@ -5893,7 +5897,7 @@ Figure~\ref{fig:interp-R7}.
                                     (,@(map (lambda (x) 'Any) xs) -> Any))])))
          ((interp-r7 top-level) body))]
       [`(vector ,(app recur elts) ...)
-       (define tys (map get-injected-type elts))
+       (define tys (map get-tagged-type elts))
        `(inject ,(apply vector elts) (Vector ,@tys))]
       [`(vector-set! ,(app recur v1) ,n ,(app recur v2))
          (match v1