well, I guess I gave a poor example, suppose you needed to destructure that bar! out of an ok tuple.
def foo(bar!) do
with {:ok, bar!} <- thing1(bar!),
{:ok, bar!} <- thing2(bar!),
{:ok, bar!} <- thing3(bar!) do
bar!
end
end
Inspiration came from julia, where ! at the end of the function means "watch out, one of the parameters is gonna be mutated!"