   @doc """
   Get all keys in the dict.
   """
-  @spec keys(t) :: list(key :: term)
   def keys(dict) do
     dict_fold(dict, [], fn { k, _ }, acc -> [k|acc] end)
   end

  to the given function. Adds initial value if
  the key does not exist in the dicionary.
  """
  @spec update(t, key :: term, initial :: term, (term -> term)) :: t
  def update(dict, key, initial, fun) when is_function(fun, 1) do
    { dict, _ } = dict_put(dict, key, { :update, initial, fun })
    dict

  @doc """
  Returns the dict size.
  """
  def size(dict) do
    elem(dict, 1)
  end
