anchor.diff:      do_shuffle(RemainingList, [Item|ShuffledList]).
   
   
  +%% Another shuffle algorithm that is more efficient in Erlang since it only
  +%% traverses the links in the List type three times.
  +-spec improved_shuffle(List :: list()) -> list().
  +
  +improved_shuffle(List) ->
  +    Proplist = [{random:uniform(), Item} || Item <- List],
  +    [Item || {_, Item} <- lists:keysort(1, Proplist)].
  +
  +
   -spec remove_element(ElemPos :: integer(), List :: list()) -> list().
   
   remove_element(1, List) ->
  
positive.code: stop(_State) ->
      ok.
  
  
  -spec shuffle(List :: list()) -> list().
  
  shuffle(List) ->
  
negative.code: 
  -export([start/2, stop/1]).
  -export([shuffle/1]).
  -export([improved_shuffle/1]).
  
  
  %% Application callbacks
  