       #=> [a: 4, b: 2, d: 4]
 
   """
+  @spec merge(t, t, fun(key, value, value, do: value)), do: t
   def merge(dict1, dict2, fun) do
     elem(dict1, 0).merge(dict1, dict2, fun)
   end

      Dict.get d, :b, 3  #=> 3

  """
  def get(dict, key, default // nil) do
    elem(dict, 0).get(dict, key, default)
  end

      #=> [a: -1, b: 2]

  """
  @spec update(t, key, fun(value, do: value)), do: t
  def update(dict, key, fun) do
    elem(dict, 0).update(dict, key, fun)
  end
