inferEnv :: Monad m => V.Var -> Scope -> InferCtx m Infer.Payload
inferEnv recurseVar scope =
    do
        recursiveType <- freshInferredVar scope "r"
        return $
                Infer.Payload recursiveType $
                Scope.insertTypeOf recurseVar recursiveType scope
inferEnv :: Monad m => V.Var -> Scope -> InferCtx m Infer.Payload
inferEnv recurseVar scope =
    do
        recursiveType <- freshInferredVar scope "r"
        return $
                Infer.Payload recursiveType $
                Scope.insertTypeOf recurseVar recursiveType scope
inferEnv recurseVar scope =
    do
        recursiveType <- freshInferredVar scope "r"
        return $
                Infer.Payload recursiveType $
                Scope.insertTypeOf recurseVar recursiveType scope