Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/comp-lib/strghash.sml
ViewVC logotype

Annotation of /sml/trunk/src/comp-lib/strghash.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 89 - (view) (download)

1 : monnier 89 (* stringhash.sml
2 :     *
3 :     * Copyright 1989 by AT&T Bell Laboratories
4 :     *)
5 :    
6 :     structure StrgHash =
7 :     struct
8 :    
9 :     val prime = 8388593 (* largest prime less than 2^23 *)
10 :     val base = 128
11 :    
12 :     fun hashString (str: string) : int = let
13 :     val l = size str
14 :     fun ordof i = Char.ord(String.sub(str, i))
15 :     in
16 :     case l
17 :     of 0 => 0
18 :     | 1 => ordof 0
19 :     | 2 => ordof 0 + base * ordof 1
20 :     | 3 => ordof 0 + base * (ordof 1 + base * ordof 2)
21 :     | _ => let
22 :     fun loop (0,n) = n
23 :     | loop (i,n) = let
24 :     val i = i-1
25 :     val n' = ordof i + (base * n)
26 :     in
27 :     loop (i, (n' - prime * Int.quot(n', prime)))
28 :     end
29 :     in
30 :     loop (l,0)
31 :     end
32 :     (* end case *)
33 :     end
34 :    
35 :     end (* structure StrgHash *)
36 :    
37 :    
38 :    
39 :    
40 :     (*
41 :     * $Log: strghash.sml,v $
42 :     * Revision 1.1.1.1 1998/04/08 18:39:14 george
43 :     * Version 110.5
44 :     *
45 :     *)

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0