TYPE E = e1:INT e2:STR e3:SYM; ; EE = INT * STR; F = v1:SYM; A = INT | STR | SYM; ENDTYPE _ok(nome,e1,e2) = if(e1 == e2 -> pp("ok " ++ nome ) , else -> pp("ERRO: " ++ nome)); x0 <- E(12,"batatas",'tomates); x1 <- in-E( <12,"batatas",'tomates>); x2 <- out-E(x0); _ok("in_ and out_", in-E( out-E( x0) ) , x0 ); _ok("curry tup2arg",curry(tup2arg)(E)(<12,"batatas",'tomates>), x0 ); y0 <- F('a8); _ok("tup with one field", in-F( out-F( y0) ), y0); x1 <- in-A( i1(12)); _ok("union", in-A( out-A( x1) ), x1); _ok("assumido",2,3); quit.