
{-

  f (xs) {                         f (xs) {}
     ...                               while (1) {
     return f(es)                          ...
     ...                                   xs = es; continue;
  }                                        ...
                                       }
                                   }
-}

isTailRecursive f (CBind False [(_, Val t (ECall g _ _))] (CRet (ENew (Tuple 0 _) _ _)))
  | t == tUNIT                          = f == g