lamU :: (Monad m, Monoid r)
  => Translate m [C.CoreContext] C.Term r
  -> Translate m [C.CoreContext] C.Term r
lamU rr = translate $ \e -> case e of
  C.Lambda tv e -> apply (C.LambdaBody tv) rr e
  _             -> fail "lamU"
lamU :: (Monad m, Monoid r)
  => Translate m [C.CoreContext] C.Term r
  -> Translate m [C.CoreContext] C.Term r
lamU rr = translate $ \e -> case e of
  C.Lambda tv e -> apply (C.LambdaBody tv) rr e
  _             -> fail "lamU"
lamU rr = translate $ \e -> case e of
  C.Lambda tv e -> apply (C.LambdaBody tv) rr e
  _             -> fail "lamU"