.'
[clean-tests.git] / rank2 / test.icl
index 81685e2..fb00656 100644 (file)
@@ -25,12 +25,30 @@ instance expr Print where
        lit i = Print (toString i)
        +. (Print l) (Print r) = Print (l +++ "+" +++ r)
 
-printEval :: (A.v: v a | expr v) -> (Maybe a, String)
-printEval f = (eval f, let (Print p) = f in p)
+//printEval :: (A.v: v a | expr v & + (v Int)) -> (Maybe a, String)
+//printEval :: (A.v: v a | expr v & + (v Int)) -> (Maybe a, String)
+//printEval f = (eval f, print f)
+
+printEval` :: (v a) (w a) -> (Maybe a, String) | expr v & expr w
+printEval` f1 f2 = (eval f1, print f2)
+
+printEval f :== printEval` f f
+
+//x = lit 4 + lit 28
+//y = lit 4 +. lit 28
 
 //Mag niet
+//Start = printEval (lit 4 +. lit 38)
 Start :: (Maybe Int, String)
-Start = printEval (lit 4 +. lit 38)
+//Start = printEval (lit 2 + lit 40)
+Start = printEval` expr expr
+//Start = printEval expr
+
+expr :: v Int | expr v & + (v Int)
+expr = lit 4 + lit 38
+//Start = printEval (lit 4 +. lit 38)
+
+//Start = eval (lit 4 + lit 38)
 
 //Mag wel
-//Start = let (Print f) = lit 4 + lit 38 in f
+//Start = print (lit 4 + lit 38)