=comm out_(t,val)= let(t1=gettype(t), m=hd(t1)) in if(m=='TUP /\ length(t1) == 2 -> p1(val), m=='TUP -> ignlab(val), m=='ALT /\ is(t1[2],val) -> <1,val>, m=='ALT /\ is(t1[3],val) -> <2,val>, m=='ALT /\ is(t1[4],val) -> <3,val>, m=='ALT /\ is(t1[5],val) -> <4,val>, m=='ALT /\ is(t1[6],val) -> <5,val>, m=='ALT /\ is(t1[7],val) -> <6,val>, else -> < 'Erro, m, t1, val> ) ; in_(t,val)= let(t1=gettype(t), ; = nwrite(stdout,<'debug, 'in_ , t1, val >), m=hd(t1)) in if(m=='TUP /\ is-(ANY-seq)(val)-> tup2arg(t,val), m=='TUP -> tup2arg(t,), m=='ALT -> p2(val), else -> < 'Erro, m, t1, val> ) ; =cut TYPE E = e1:INT e2:STR e3:SYM; ; EE = INT * STR; F = v1:SYM; A = INT | STR | SYM; ENDTYPE x0 <- E(12,"batatas",'tomates); ;pp(x0); x1 <- in-E( <12,"batatas",'tomates>); x2 <- out-E(x0); pp( if( in-E( out-E( x0) ) == x0 -> "in_ and out_ \t\t- ok1", else -> "erro1:")); pp( if(curry(tup2arg)(E)(<12,"batatas",'tomates>) == x0 -> "curry tup2arg \t\t- ok2", else -> "erro2")); y0 <- F('a8); pp( if( in-F( out-F( y0) ) == y0 -> "tup with one field\t- ok3", else -> "erro3")); x1 <- in-A( <1,12>); pp( if( in-A( out-A( x1) ) == x1 -> "union \t\t\t- ok4", else -> "erro4")); f1 <- curry(arg2tup)(f2); f2(l) = <2:l>;