Haskell slicing tool?
Thu, 21 Mar 2002 22:10:14 -0500
On Wed, 20 Mar 2002 10:42:15 +0000
"Olaf Chitil" <email@example.com> wrote:
> Sengan.Baring-Gould@nsc.com wrote:
> > > > Are there any tools to perform program slicing on Haskell?
> > > > I often find myself wanting to find all "fromJusts" invoked
> > > > from the current function, or all functions that use a
> > > > particular member of my monad's ADT.
> > Actually I was hoping for a static tool.
> I'd be interested to learn for what purpose you want this kind of
> information and also more precisely what you would like such a static
> tool to do for you.
I looked at for what I use the "#" command in vim over the last 2 days,
and when it becomes insufficient:
* Upwards slicing:
- to see what parameters a function is actually given (can be quite a
long way from where the parameter is actually constructed, versus
simply passed around).
- to find dead code (function results that are never used)
* Downwards slicing
- to debug code (which head failed? One of those under function f, but
what are they?)
- which instance of (>>=) is it that I'm using here?
* Complex queries:
A := set of all functions refered to by f1's definition
B := set of all functions refered to by f2's definition
C := set of functions I'm interested in
D := intersection of A, B and C
D would then be the functions used both by A and B of the set I'm
interested in C.
In general the answer is to understand, debug and refactor code
in larger projects (my current project weighs 4500 lines of Haskell