subst :: Text -> Val -> Val -> Val
subst outerVar expr (Lam innerVar body) | outerVar == innerVar = Lam innerVar body
                                        | otherwise = Lam innerVar (subst outerVar expr body)
subst :: Text -> Val -> Val -> Val
subst outerVar expr (Lam innerVar body) | outerVar == innerVar = Lam innerVar body
                                        | otherwise = Lam innerVar (subst outerVar expr body)
subst outerVar expr (Lam innerVar body) | outerVar == innerVar = Lam innerVar body
                                        | otherwise = Lam innerVar (subst outerVar expr body)