This does fix the problem. Thank you. But raises a new question. Since that list was being constructed like this where trialList oldps = [[(h' i) , (p' i)] | i <- [1 ..], i < tn] it should have only had two elements when tn = 3. So, I assume that I am getting hit by a laziness issue, but how is it that I should have known that using mapM_ wouldn't have force thelist to exist in a finite form? By the way, I just now use "take (tn -1)" and all is good, but I would like to understand this issue better so I can avoid similar pitfalls in the future. Thx, Britt On Thu, Mar 3, 2011 at 10:59 AM, Felipe Almeida Lessa <felipe.lessa@gmail.com> wrote:
On Thu, Mar 3, 2011 at 3:34 PM, Britt Anderson <britt.uwaterloo@gmail.com> wrote:
--sequence_ $ map (trialLoop gain tolerance joy) (trialList ps) trialLoop gain tolerance joy ((trialList ps)!!0) trialLoop gain tolerance joy ((trialList ps)!!1)
First of all, instead of "sequence_ $ map ..." use "mapM_ ...", which is the same thing but nicer.
Now, have you tried "mapM_ (trialLoop gain tolerance joy) (take 2 $ trialList ps)"? That should be the same as those two lines you wrote. I am suspecting here that your program is hanging only with mapM_ because of some of the trials that are not the first two.
HTH,
-- Felipe.