primU :: (Monad m, Monoid dec, Monoid r)
  => Translate m dec C.Term r
primU = translate $ \e -> case e of
  (C.Prim x) -> return $ mempty (C.Prim x)
  _         -> fail "varU"
primU :: (Monad m, Monoid dec, Monoid r)
  => Translate m dec C.Term r
primU = translate $ \e -> case e of
  (C.Prim x) -> return $ mempty (C.Prim x)
  _         -> fail "varU"
primU = translate $ \e -> case e of
  (C.Prim x) -> return $ mempty (C.Prim x)
  _         -> fail "varU"