# Conditional pipe operator on error tuple

**URL:** <https://forum.elixirforum.com/t/conditional-pipe-operator-on-error-tuple/24682>\
**Category:** Discussions\
**Tags:** macros, discussion, kernel, pipe-operator\
**Created:** [August 14, 2019, 4:28pm UTC](https://forum.elixirforum.com/t/conditional-pipe-operator-on-error-tuple/24682 "2019-08-14T16:28:03Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![danj](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/d/db5fbb/32.png) [@danj](https://forum.elixirforum.com/u/danj)\
**Post date:** [August 14, 2019, 10:42pm UTC](https://forum.elixirforum.com/t/conditional-pipe-operator-on-error-tuple/24682/5 "2019-08-14T22:42:44Z")

</div>

This seems to fix the problem:

```elixir
  defmacro left ~> right do
    quote do
      case unquote( left ) do
        { :error, _ } = err -> err
        val ->
          val |> unquote( right )
      end
    end
  end

```

---

_[View the full topic](https://forum.elixirforum.com/t/conditional-pipe-operator-on-error-tuple/24682)._
