anchor.diff:  make_empty_reply() ->
       #{ errors => [], messages => [], game_end => false}.
   
  +add_reply_error(String, Reply) ->
  +    add_reply_error("~s", [String], Reply).
  +
   add_reply_error(FormatStr, Data, Reply) ->
       Reply#{ errors := [ list_to_binary(io_lib:format(FormatStr, Data)) | maps:get(errors, Reply) ]}.
   
  +add_reply_text(String, Reply) ->
  +    add_reply_text("~s", [String], Reply).
  +
   add_reply_text(FormatStr, Data, Reply) ->
       Reply#{ messages := [ list_to_binary(io_lib:format(FormatStr, Data)) | maps:get(messages, Reply) ]}.
   
  
positive.code: 
  %% @doc Try to move in the direction specified by the player.
  -spec cmd_go(Cmd :: binary(), Args :: [binary()], State :: state(), Reply :: reply()) -> {state(), reply()}.
  cmd_go(_Cmd, _Direction, State, Reply) ->
      {State, Reply}.
  
  %% @doc Try to move the named object from the world to the player's inventory.
  -spec cmd_get(Cmd :: binary(), Args :: [binary()], State :: state(), Reply :: reply()) -> {state(), reply()}.
  
negative.code: -define(INITIAL_ROOM, a).
  
  %% Initial room descriptions.
  -define(ROOMS, #{ e => <<"A nice garden\n\nCongratulations you've escaped">>
                  , a => <<"A cold room">>
                  , b => <<"A dusky room">>
                  , c => <<"A hot room">>
  