   Giving it an empty list raises:
 
       hd([])
-      #=> ** (ArgumentError) argument error
+      ** (ArgumentError) argument error
 
   """
   @doc guard: true

  It raises `BadMapError` if the first element is not a map.

  Allowed in guard tests. Inlined by the compiler.
  """
  @doc guard: true, since: "1.10.0"
  @spec is_map_key(map, term) :: boolean

      # improper list on the right will return an improper list
      iex> [1] ++ [2 | 3]
      [1, 2 | 3]

  The `++/2` operator is right associative, meaning:

      iex> [1, 2, 3] -- [1] ++ [2]
      [3]

  As it is equivalent to:

      iex> [1, 2, 3] -- ([1] ++ [2])
      [3]

  """
  @spec list ++ term :: maybe_improper_list
