dataU :: (Monoid dec, Monad m, Monoid r)
  => Translate m dec C.Term r
dataU = translate $ \e -> case e of
  (C.Data d) -> return $ mempty
  _          -> fail "dataU"
dataU :: (Monoid dec, Monad m, Monoid r)
  => Translate m dec C.Term r
dataU = translate $ \e -> case e of
  (C.Data d) -> return $ mempty
  _          -> fail "dataU"
dataU = translate $ \e -> case e of
  (C.Data d) -> return $ mempty
  _          -> fail "dataU"