Browse thread
[Caml-list] unused function detection
-
skaller
-
David MENTRE
-
Nicolas Cannasse
- skaller
-
Michael Furr
-
skaller
- Michael Furr
-
skaller
- Eric Dahlman
-
Nicolas Cannasse
-
David MENTRE
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2004-06-22 (19:46) |
From: | Michael Furr <furr@c...> |
Subject: | Re: [Caml-list] unused function detection |
On 23 Jun 2004, skaller wrote: > On Wed, 2004-06-23 at 04:33, Michael Furr wrote: > > > I just finished(well almost) writing a tool which does something very > > similar. The motivation was if I have some module M and a program P, what > > is the most general(opaque) signature for M which still lets P compile. > > This information can be extremely useful since you know exactly which > > types are used opaquely and thus you can safely re-implement those data > > structures. Also, if you have some internal function in a module and it > > is not used anywhere in the program, it won't show up in the resulting > > signature. > > ocaml -i + ocamldep. Shaken (not stirred) Well, for handling types, its slightly more than that. For instance, if I'm using some module with a definition: type t = int * int val f0 : int -> int -> t val f1 : int -> t val f2 : t -> t and I have the program: let x = f0 1 2 in let y = f1 (fst x) in let z = f2 x y in z Then the inferred signature would be type inferred1; type inferred2; type inferred3; type t = inferred1 * inferred2 val f0 : int -> int -> t val f1 : inferred1 -> t val f2 : t -> inferred3 Thus you would know that 't' is only treated as a pair and never as a pair of ints. Thus you could easily, say, swap out int for int32 without affecting the rest of the program. > Hmmm. At present, you are looking for uses of functions [...] > To solve my problem, you only need to add M to that list, > looking for uses of M.f1 etc in M itself. [Of course I want > the complement of the answer .. ] Which shouldn't be too hard. The tool is just a (non-invasive) patch to the compiler which I'll probably clean up and release in a few weeks once I get a little more time. If you're interested in playing around with it, let me know and I'll try to get to it sooner rather than later. -mike ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners