anchor.diff:  %%% as unadorned binaries, and accept that mutation is unavailable.
   %%% R5RS did not have bytevectors, they were added in R6RS and R7RS.
   %%%
  -%%% port		<an arity-0 closure from module es_port_wrapper>
  +%%% port                <an arity-0 closure from module es_port_wrapper>
   %%%
   %%% [NYI]
   %%% Scheme requires ports to be a distinct type.  We relax that
  
positive.code:       false
    end.
  
  mk_eof_object() -> fun ?MODULE:?the_eof_object/0.
  
  ?the_eof_object() -> [].
  
  %% Vectors
  
  is_vector(X) -> is_tuple(X).
  
  list_to_vector(L) -> erlang:list_to_tuple(L).
  
  %% Characters
  
  integer_to_char(I) -> I.
  
  %% Strings
  
  is_string(X) ->
    is_binary(X).
  
  binary_to_string(B) -> B.
  
  string_to_binary(S) -> S.
  
negative.code: 
  -module(es_datum).
  
  %% API
  -export([ binary_to_string/1
          , is_boolean/1
          , is_eof_object/1
          , is_string/1
          , is_symbol/1
          , is_vector/1
          , integer_to_char/1
          , list_to_vector/1
          , mk_eof_object/0
          , string_to_binary/1
          ]).
  
  %% private exports
  -export([ the_eof_object/0
          ]).
  
  %% API -------------------------------------------------------------------------
  
  %% Booleans
  
  is_boolean(X) -> erlang:is_boolean(X).
  
  %% Characters
  
  integer_to_char(I) -> I.
  
  %% EOF object
  
  -define(the_eof_object, the_eof_object).
  
  