 
 
 
 
 
 
Checking Programming errors; a ?
- To: mathgroup at smc.vnet.net
- Subject: [mg36616] Checking Programming errors; a ?
- From: Jack Goldberg <jackgold at umich.edu>
- Date: Fri, 13 Sep 2002 23:33:18 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hi Group:
I often run into this difficulty:  when designing a program, say as a
module, and testing it for various inputs, I get wrong answers.  What to
do?  I use a method that works for me but may not be the best available.
I want to show my method and then ask a question about how it can be
imporved.  (Oh yes, I abandoned Trace a long time ago!)
myFunction[f_] := Module[ {L1,L2,L3},
L1 = ... ;
L2 = ... ;
l3 = ... ;
	"final step"
		]
To see what went wrong, I use (*  *) selectively as follows:
Stage 1
myFunction[f_] := Module[ {L1,L2,L3},
L1 = ...  (*;
L2 = ... ;
L3 = ... ;
	"final step" *)
	]
Thus I see if L1 worked as expected.  The next step is to put  (* after L2
and see if this works.  I continue this til the bitter end and I usually
find my errors.
My question;   The process of moving  (*   *)  step by step through the
program is quite tedious when the code has lots more lines.  What I would
like is a "meta-program" which (like FoldList) does this job for me.  The
output of this "meta-program" is the list of outputs of each line in the
module, probably best printed as a column.
This sounds like Trace but my problem with Trace is it is terribly
difficult to read.  For the not-so-subtle programming I do, the only thing
I need is what expression is returned line by line.
Any advice?  All remarks are appreciated!
Jack

