projects
/
scheme.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Formulate destructors properly
[scheme.git]
/
tests.scm
diff --git
a/tests.scm
b/tests.scm
index 4e50dc61908cee17c4d1c1ada96c57282abf5830..30d23f61ed6375c786574a1d18056eb0278b398a 100644
(file)
--- a/
tests.scm
+++ b/
tests.scm
@@
-43,6
+43,15
@@
(let ((str (read-file "/tmp/test-output.txt")))
(test str output)))
(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))
(test-types (typecheck '((lambda (x) (+ ((lambda (y) (x y 3)) 5) 2))))
'(abs (abs Int (abs Int Int)) Int))
@@
-168,3
+177,15
@@
(go p 1)))])
(pow 4 2))
16)
(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")