import LIB/default.lm; type XY X | (Y( U64 )); type XYZ (Z( XY , U64 )); x1 := (: (Z( X 1_u64 )) XYZ); x2 := (: (Z( (Y( 2_u64 )) 3_u64 )) XYZ); f1 := λ(: abc XYZ). (: ( abc ) XYZ); f2 := λ. (: ( x1 ) XYZ); f3 := λ. (: ( (f2()) ) XYZ); f5 := λ. (: ( x2 ) XYZ); f6 := λ. (: ( (f5()) ) XYZ); print := λ(: abc XYZ). (: ( (match abc ( () ( (Z( X x )) ( (print x) )) ( (Z( (Y( x )) y )) ( (print x) (print y) )) )) ) Nil); main := λ. (: ( (print 'F1\s_s) (print(f1 x1)) (print '\nF2\s_s) (print(f2())) (print '\nF3\s_s) (print(f3())) (print '\nF4\s_s) (print(f1 x2)) (print '\nF5\s_s) (print(f5())) (print '\nF6\s_s) (print(f6())) ) Nil);