File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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
You can’t perform that action at this time.
0 commit comments