runInfer ::
     TypeEnv
  -> Infer (Type, [Constraint])
  -> Either TypeError (Type, [Constraint])
runInfer env m = runExcept $ evalStateT (runReaderT m env) initInfer
runInfer ::
     TypeEnv
  -> Infer (Type, [Constraint])
  -> Either TypeError (Type, [Constraint])
runInfer env m = runExcept $ evalStateT (runReaderT m env) initInfer
runInfer env m = runExcept $ evalStateT (runReaderT m env) initInfer