       case x do
         0 ->
           "This clause won't match"
+
         _ ->
           "This clause would match any value (x = #{x})"
       end

      value
      #=> unbound variable value

  When binding variables with the same names as variables in the outer context,
  the variables in the outer context are not affected.

      value = 7


        _ -> "Will match"
      end
      #=> "Will match"

  ## Using guards to match against multiple values

  While it is not possible to match against multiple patterns in a single
  clause, it's possible to match against multiple values by using guards:

      case data do
        value when value in [:one, :two] ->
          "#{value} has been matched"

        :three ->
          "three has been matched"
      end

  """
  defmacro case(condition, clauses), do: error!([condition, clauses])
