Skip to content

Commit b9bdc36

Browse files
committed
Interp test.
1 parent 904811d commit b9bdc36

1 file changed

Lines changed: 39 additions & 1 deletion

File tree

langs/mountebank/test/test-runner.rkt

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,45 @@
336336
#t)
337337
(check-equal? (run '(let ((x '(foo . foo)))
338338
(eq? (car x) (cdr x))))
339-
#t))
339+
#t)
340+
(check-equal?
341+
(run '(define (eval e r)
342+
(match e
343+
[(list 'zero? e)
344+
(zero? (eval e r))]
345+
[(list 'sub1 e)
346+
(sub1 (eval e r))]
347+
[(list '+ e1 e2)
348+
(+ (eval e1 r) (eval e2 r))]
349+
[(list 'if e1 e2 e3)
350+
(if (eval e1 r)
351+
(eval e2 r)
352+
(eval e3 r))]
353+
[(list (list x) e)
354+
(lambda (v) (eval e (cons (cons x v) r)))]
355+
[(list e1 e2)
356+
((eval e1 r) (eval e2 r))]
357+
[_
358+
(if (symbol? e)
359+
(lookup r e)
360+
e)]))
361+
'(define (lookup r x)
362+
(match r
363+
[(cons (cons y v) r)
364+
(if (eq? x y)
365+
v
366+
(lookup r x))]))
367+
'(eval '(((λ (t)
368+
((λ (f) (t (λ (z) ((f f) z))))
369+
(λ (f) (t (λ (z) ((f f) z))))))
370+
(λ (tri)
371+
(λ (n)
372+
(if (zero? n)
373+
0
374+
(+ n (tri (sub1 n)))))))
375+
36)
376+
'()))
377+
666))
340378

341379
(define (test-runner-io run)
342380
;; Evildoer examples

0 commit comments

Comments
 (0)