2. (i) ('u Tree -> 'et -> 'u Tree -> 'u Tree) -> 'et Tree -> 'u Tree (ii) tf : 'a -> 'b -> 'c Tree from the heading 'a = 'c Tree -> 'd -> 'c Tree -> 'c Tree from g(tf g L)... 'b = 'd Tree so tf : ('c Tree -> 'd -> 'c Tree -> 'c Tree) -> 'd Tree -> 'c Tree (iii) fun mirror t = tf (fn L => fn e => fn R => Fork(R,e,L)) t; or similar -------------------------------------------------------- [[not unrelated to assignment-2, 2006]]