module Flip; data XX = E | Z(XX) | O(XX); def XX flip(XX x) = case x { E => E; Z(y) => O(flip(y)); O(y) => Z(flip(y)); }; def XX start(XX w) = flip(w); { }