-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