182309Speter(*
2158501Speter * PIntMap: Maps over integers implemented as Patricia trees.
382309Speter * Copyright (C) 2000 Jean-Christophe FILLIATRE
482309Speter *
582309Speter * This software is free software; you can redistribute it and/or
682309Speter * modify it under the terms of the GNU Library General Public
782309Speter * License version 2, as published by the Free Software Foundation.
882309Speter *
982309Speter * This software is distributed in the hope that it will be useful,
1082309Speter * but WITHOUT ANY WARRANTY; without even the implied warranty of
1182309Speter * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1282309Speter *
1382309Speter * See the GNU Library General Public License version 2 for more details
1482309Speter * (enclosed in the file LGPL).
1582309Speter
1682309Speter * Translated to SML by Michael Norrish, 2001.
1782309Speter *)
1882309Speter
1982309Spetersignature PIntMap =
2082309Spetersig
2182309Speter
2282309Spetertype 'a t
2382309Speter
2482309Spetertype key = int
2582309Speterexception NotFound
2682309Speter
2782309Speterval empty : 'a t
2882309Speter
2982309Speterval add : int -> 'a -> 'a t -> 'a t
3082309Speter
3182309Speterval addf : ('a -> 'a) -> int -> 'a -> 'a t -> ('a t * 'a)
3282309Speter
3382309Speterval find : int -> 'a t -> 'a
3482309Speter
3582309Speterval remove : int -> 'a t -> 'a t
3682309Speter
3782309Speterval mem :  int -> 'a t -> bool
3882309Speter
3987702Sjhbval app : (int * 'a -> unit) -> 'a t -> unit
4087702Sjhb
4182309Speterval map : ('a -> 'b) -> 'a t -> 'b t
4283366Sjulian
4383366Sjulianval mapi : (int -> 'a -> 'b) -> 'a t -> 'b t
4483366Sjulian
4582309Speterval fold : (int * 'a * 'b -> 'b) -> 'b -> 'a t -> 'b
4682309Speter
4782309Speterval choose : 'a t -> 'a t * (int * 'a)
4882309Speter
4982309Speterval size : 'a t -> int
50
51end
52