open Array; val b = 10; fun h1(nil) = 0 | h1(x::xs) = (ord(x)+h1(xs)) mod b; fun h(x) = h1(explode(x)); fun insertList(x,nil) = [x] | insertList(x,y::ys) = if x=y then y::ys else y::insertList(x,ys); fun insert(x,A) = let val bucket = h(x); val L = sub(A,bucket) in update(A,bucket,insertList(x,L)) end; fun deleteList(x,nil) = nil | deleteList(x,y::ys) = if x=y then ys else y::deleteList(x,ys); fun delete(x,A) = let val bucket = h(x); val L = sub(A,bucket) in update(A,bucket,deleteList(x,L)) end; fun lookupList(x,nil) = false | lookupList(x,y::ys) = if x=y then true else lookupList(x,ys); fun lookup(x,A) = lookupList(x,sub(A,h(x))); val headers = array(b, nil: string list);