[Haskell-beginners] Heathrow to London from lyahgg - infinite loop

Siddharth Karandikar siddharth.karandikar at gmail.com
Wed Jan 4 05:21:26 CET 2012

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?


More information about the Beginners mailing list