(let ((str (read-file "/tmp/test-output.txt")))
(test str output)))
+(test (data-tors '(data A
+ (foo Int Bool)
+ (bar Bool)))
+ '((foo . (abs Int (abs Bool A)))
+ (foo~0 . (abs A Int))
+ (foo~1 . (abs A Bool))
+ (bar . (abs Bool A))
+ (bar~0 . (abs A Bool))))
+
(test-types (typecheck '((lambda (x) (+ ((lambda (y) (x y 3)) 5) 2))))
'(abs (abs Int (abs Int Int)) Int))
(go p 1)))])
(pow 4 2))
16)
+
+(test-prog-stdout '(let ([f (lambda (n)
+ (if (= n 0)
+ 0
+ (let ()
+ (print "a")
+ (g (- n 1)))))]
+ [g (lambda (m)
+ (let ()
+ (print "b")
+ (f (- m 1))))])
+ (f 10)) "ababababab")