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