       iex> {x, y, z}
       {1, 2, 3}
 
-  Notice in the example above, even though the right
-  size has more entries than the left, destructuring works
-  fine. If the right size is smaller, the remaining items
-  are simply assigned to nil:
+  In the example above, even though the right list has more entries than the
+  left one, destructuring works fine. If the right list is smaller, the
+  remaining items are simply set to `nil`:
 
       iex> destructure([x, y, z], [1])
       iex> {x, y, z}
       {1, nil, nil}
 
-  The left side supports any expression you would use
-  on the left side of a match:
+  The left-hand side supports any expression you would use
+  on the left-hand side of a match:
 
       x = 1
       destructure([^x, y, z], [1, 2, 3])
 
-  The example above will only work if x matches
-  the first value from the right side. Otherwise,
-  it will raise a MatchError.
+  The example above will only work if `x` matches the first value in the right
+  list. Otherwise, it will raise a `MatchError` (like the `=` operator would
+  do).
   """
   defmacro destructure(left, right) when is_list(left) do
     Enum.reduce left, right, fn item, acc ->


  It is important to note that reading an attribute takes a snapshot of
  its current value. In other words, the value is read at compilation
  time and not at runtime. Check the module `Module` for other functions
  to manipulate module attributes.
  """
  defmacro @(expr)

        baz
      end

  In order to compare more than two clauses, the `cond/1` macro has to be used.
  """
  defmacro if(condition, clauses) do
    do_clause = Keyword.get(clauses, :do, nil)
