Add notes on ownership
[scheme.git] / tests.scm
index a198dd4ac5a00e4cd71e9a88f8ae32eefbca994c..bcda209fe2b069bc3778b5f80665877203d067cb 100644 (file)
--- a/tests.scm
+++ b/tests.scm
                    bar))
            '(abs a a))
 
+(test-types (typecheck '(let ([foo 3]
+                             [bar (+ foo baz)]
+                             [baz (- bar 1)])
+                         bar))
+           'int)
+
+(test-types (typecheck '(let ([foo 3]
+                             [bar (baz foo)]
+                             [baz (lambda (x) x)])
+                         baz))
+           '(abs a a))
+
+(test-types (typecheck '(let ([foo 3]
+                             [bar (baz foo)]
+                             [baz (lambda (x) x)])
+                         bar))
+           'int)
+
 (test-prog '(+ 1 2) 3)
+(test-prog '(bool->int (= 2 0)) 0)
 (test-prog '((lambda (x) ((lambda (y) (+ x y)) 42)) 100) 142)
 
 (test-prog '(* 10 5) 50)
                             (f f (- n 1) (+ x 1)))))]
              (inc inc 3 2))
           5)
+
+(test-prog '(let ([go (lambda (n m x)
+                       (if (= n 0)
+                            x
+                            (go (- n 1) m (* x m))))]
+                 [pow (lambda (p y) (go p y 1))])
+                    
+             (pow 3 2))
+          8)