Review and changes from Jocelyn Fiat

indeed we could also have

hash (s: STRING; a_hash_type: STRING): STRING
   do
     if a_hash_type.same_string ("md5") then
               Result := m5_hash (..)
     elseif ...
and so on ...