
  [;1m-spec put(Key, Val) -> term() when Key :: term(), Val :: term().[0m

  Adds a new [;;4mKey[0m to the process dictionary, associated with the
  value [;;4mVal[0m, and returns [;;4mundefined[0m. If [;;4mKey[0m exists, the old
  value is deleted and replaced by [;;4mVal[0m, and the function returns
  the old value. The average time complexity for the current
  implementation of this function is O([;;4m1[0m) and the worst case time
  complexity is O([;;4mN[0m), where [;;4mN[0m is the number of items in the
  process dictionary. Example:

    > X = put(name, walrus), Y = put(name, carpenter),
    Z = get(name),
    {X, Y, Z}.
    {undefined,walrus,carpenter}

  Note:
    The values stored when [;;4mput[0m is evaluated within the scope of
    a [;;4mcatch[0m are not retracted if a [;;4mthrow[0m is evaluated, or if
    an error occurs.
