( deftype Point TUP ( XX INT ) ( YY INT ) ) ;--------------------- ( deftype CPoint TUP ( Lb1 STR ) ( P Point ) ) ;--------------------- ( deftype Transf TUP ( Lb2 STR ) ( Q Point ) ( T ANY ) ) ;--------------------- ;test ; comp <- _comp; ; id(x) = x; ( def succ lambda ( x ) ( add x 1 ) ) ;--------------------- ( def pp0 ( Point 0 0 ) ) ;--------------------- ( def pp1 ( Point 5 10 ) ) ;--------------------- ( def cc1 ( CPoint "relative origin" pp1 ) ) ;--------------------- ( def tt0 ( Transf "origin" pp0 ( lambda ( x ) ( add ( mul x x ) 7 ) ) ) ) ;--------------------- ( def tt1 ( Transf "origin" pp1 succ ) ) ;--------------------- ( out_ Point pp0 ) ;--------------------- ; o erro e aqui ( pp ( ( prod id ( ( curry out_ ) Point ) ) ( out_ CPoint cc1 ) ) ) ;--------------------- ;(id _*_ out-Point) (out-CPoint(cc1));