[[ (def ch x:^Int = x!0 ch)!(new y:^Int y) ]]

=

(def c1 x1:^^Int = 
    (def c2 x2:^Int = x1!x2 
       [[ (new y:^Int y) ? c2]]) 
[[(def ch x:^Int = x!0 ch) ? c1]])

=

(def c1 x1:^^Int = 
    (def c2 x2:^Int = x1!x2 
       (new y:^Int [[y ? c2]]) )
  (def ch [[ x:^Int = x!0 ]]  [[ch ? c1]]) )

=  (per semplicita' traduciamo direttamente
    [[ x:^Int = x!0 ]] in x:^Int = x!0  )


(def c1 x1:^^Int = 
    (def c2 x2:^Int = x1!x2 
       (new y:^Int c2!y) )
    (def ch x:^Int = x!0  
  c1!ch) )
