
Hi all, I am trying out Heathrow to London problem given in Learn You a Haskell book. There is optimization tip given by author to avoid computing priceA = sum $ map snd pathA every time. I was trying to implement that like following - roadStep :: (Path, Path, Int, Int) -> Section -> (Path, Path, Int, Int) roadStep (pathA, pathB, cA, cB) (Section a b c) = let forwardPriceToA = cA + a crossPriceToA = cB + b + c forwardPriceToB = cB + b crossPriceToB = cA + a + c (newPathToA, cA) = if forwardPriceToA <= crossPriceToA then ((A, a):pathA, forwardPriceToA) else ((C, c):(B, b):pathB, crossPriceToA) (newPathToB, cB) = if forwardPriceToB <= crossPriceToB then ((B, b):pathB, forwardPriceToB) else ((C, c):(A, a):pathA, crossPriceToB) in (newPathToA, newPathToB, cA, cB) But whenever I run this function - roadStep ([], [], 0, 0) (Section 50 10 30) its going in infinite loop! I am not able to figure out whats causing this .. any thoughts? Thanks, Siddharth