anchor.diff:  %%% that returns the corresponding handle (Pid).  The function closures
   %%% need to come from a reserved module to enable checking their type.
   %%%
  -%%% procedure		Fun/N
  +%%% procedure           Fun/N
   %%%
   %%% An Scheme procedure becomes an Erlang function of the same arity.
   %%% Variable-arity procedures are not supported.
   %%%
  -%%% tid			pid
  +%%% tid                 pid
   %%%
   %%% RnRS Scheme does not have threads, but ErlScheme adds threads
   %%% and maps them to Erlang processes.
  
positive.code: %%% 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>
  %%%
  %%% [NYI]
  %%% Scheme requires ports to be a distinct type.  We relax that
  
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).
  
  