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