1 (* ========================================================================= *) |
1 (* ========================================================================= *) |
2 (* NAMES *) |
2 (* NAMES *) |
3 (* Copyright (c) 2004-2006 Joe Hurd, distributed under the BSD License *) |
3 (* Copyright (c) 2004 Joe Hurd, distributed under the BSD License *) |
4 (* ========================================================================= *) |
4 (* ========================================================================= *) |
5 |
5 |
6 signature Name = |
6 signature Name = |
7 sig |
7 sig |
8 |
8 |
9 type name = string |
9 (* ------------------------------------------------------------------------- *) |
|
10 (* A type of names. *) |
|
11 (* ------------------------------------------------------------------------- *) |
|
12 |
|
13 type name |
|
14 |
|
15 (* ------------------------------------------------------------------------- *) |
|
16 (* A total ordering. *) |
|
17 (* ------------------------------------------------------------------------- *) |
10 |
18 |
11 val compare : name * name -> order |
19 val compare : name * name -> order |
12 |
20 |
13 val pp : name Parser.pp |
21 val equal : name -> name -> bool |
|
22 |
|
23 (* ------------------------------------------------------------------------- *) |
|
24 (* Fresh names. *) |
|
25 (* ------------------------------------------------------------------------- *) |
|
26 |
|
27 val newName : unit -> name |
|
28 |
|
29 val newNames : int -> name list |
|
30 |
|
31 val variantPrime : (name -> bool) -> name -> name |
|
32 |
|
33 val variantNum : (name -> bool) -> name -> name |
|
34 |
|
35 (* ------------------------------------------------------------------------- *) |
|
36 (* Parsing and pretty printing. *) |
|
37 (* ------------------------------------------------------------------------- *) |
|
38 |
|
39 val pp : name Print.pp |
|
40 |
|
41 val toString : name -> string |
|
42 |
|
43 val fromString : string -> name |
14 |
44 |
15 end |
45 end |