 
   ## Types
 
-  As in records, defining a protocol automatically defines a type
-  named `t`, which can be used as:
+  Defining a protocol automatically defines a type named `t`, which
+  can be used as:
 
       @spec present?(Blank.t) :: boolean
       def present?(blank) do

  end

  @doc """
  Defines a module as a protocol and specifies the API that
  should be defined by its implementations.

  ## Examples


  * Float
  * Function
  * PID
  * Map
  * Port
  * Reference
  * Any (see below)

  ## Protocols + Structs

  The real benefit of protocols comes when mixed with structs.
  For instance, Elixir ships with many data types implemented as
  structs, like `HashDict` and `HashSet`. We can implement the
  `Blank` protocol for those types as well:

      defimpl Blank, for: [HashDict, HashSet] do
        def blank?(dict), do: Dict.empty?(dict)
      end

  If a protocol is not found for a given type, it will fallback to
  `Any`.

  ## Fallback to any

