runEval :: Term -> Either Error Term
runEval t = do
    _ <- runTypeOf t
    runFreshM . runExceptT . eval $ t
runEval :: Term -> Either Error Term
runEval t = do
    _ <- runTypeOf t
    runFreshM . runExceptT . eval $ t
runEval t = do
    _ <- runTypeOf t
    runFreshM . runExceptT . eval $ t