import LIB/default.lm; type A (A( U64 , U64 )) | (B( U64 , U64 )); e1 := λ(: x U64). (: ( (if (==( x 0_u64 )) 1_u64 2_u64) ) U64); e2 := λ(: x U64). (: ( (match x ( () ( 0_u64 3_u64 ) ( _ 4_u64 ) )) ) U64); e3 := λ(: x U64). (: ( (if (==( x 0_u64 )) (A( 1_u64 2_u64 )) (A( 3_u64 4_u64 )) ) ) A); e4 := λ(: x U64). (: ( (match x ( () ( 0_u64 (A( 5_u64 6_u64 )) ) ( _ (A( 7_u64 8_u64 )) ) )) ) A); main := λ. (: ( (print (e1 0_u64)) (print (e1 5_u64)) (print '\n_s) (print (e2 0_u64)) (print (e2 5_u64)) (print '\n_s) (match (e3 0_u64) ( () ( (A( x y )) ( (print x) (print y) )) )) (match (e3 5_u64) ( () ( (A( x y )) ( (print x) (print y) )) )) (print '\n_s) (match (e4 0_u64) ( () ( (A( x y )) ( (print x) (print y) )) )) (match (e4 5_u64) ( () ( (A( x y )) ( (print x) (print y) )) )) (print '\n_s) ) Nil);