Hi!
Writing a phoenix application I came across a pattern which I think it could be quite common. For example, in a controller:
```
with {:ok, post} <- Blog.get_post(id),
{:ok, :authorized} <- Blog.authorize_post(post),
{:ok, updated_post} <- Blog.update_post(post, params)
do
conn
|> put_flash("Success!")
|> render("show.html", conn: conn, post: updated_post)
else
{:error, changeset_with_errors} ->
{:ok, post} <- Blog.get_post(id)
conn
|> put_flash("Error!")
|> render("edit.hml", conn: conn, post: post, changeset: changeset_with_errors)
```
In the case that the `with` statement matches the first and second match but not the third one, then the `else` clause for `{:error, changeset_with_errors}` is executed. There, even if `post` variable had already been matched in the `with` statement, I need to "match it again" in order to use it.
I know I could match it before entering the `with` statement and just authorize and update in it, but it is a pity that then the happy path is less clear to read.
So, what I'm thinking is that maybe it would be nice to have access, if possible, in `else` clauses to the variables that has been matched in the `with` part.
What do you think?
Thank you