wish: hash function for module Num

From: Jean-Christophe Filliatre (filliatr@csl.sri.com)
Date: Tue Feb 29 2000 - 02:08:12 MET

  • Next message: Philippe NARBEL: "recherche stages en entreprise orient'es O'Caml"

    [ francais ci-dessous ]

    It would be nice if the module Num would provide a hash function for
    type num, with the expected property:

         eq_num n m => hash_num n = hash_num m

    The generic hash function cannot be used, since equal nums may have
    different representations, on which the generic hash function will
    return different value (even with normalization after each
    computation):

    ======================================================================
    # open Num;;
    # let _ = Arith_status.set_normalize_ratio true;;
    - : unit = ()

    # div_num (Int 1) (Int 1);;
    - : Num.num = Ratio <abstr>

    # Hashtbl.hash (div_num (Int 1) (Int 1));;
    - : int = 504151169
    # Hashtbl.hash (Int 1);;
    - : int = 1
    ======================================================================

    It is quite a mean trick, and makes the writing of a hash function
    rather tedious, since you have to normalize the representation first.

    More generally, I would expect the Num module to use a canonical
    representation (as soon as we set_normalize_ratio).

    == francais =================================================================

    La fonction generique de hachage d'ocaml ne peut etre utilisee sur le
    type Num.num, parce qu'un meme entier peut etre represente de
    plusieurs manieres differentes, donnant des resultats differents (voir
    exemple ci-dessus). Une fonction de hash fournie par le module Num
    serait la bienvenue. Plus generalement, il serait souhaitable que le
    module Num utilise une representation canonique pour chaque rationnel.

    -- 
    Jean-Christophe Filliatre    
      Computer Science Laboratory   Phone (650) 859-5173
      SRI International             FAX   (650) 859-2844
      333 Ravenswood Ave.           email  filliatr@csl.sri.com
      Menlo Park, CA 94025, USA     web    http://www.csl.sri.com/~filliatr
    



    This archive was generated by hypermail 2b29 : Wed Mar 01 2000 - 17:50:18 MET