Debug: View variable value in recursion. Is it possible?

Help
2013-03-05
2013-03-11
  • Vlatko Basic
    Vlatko Basic
    2013-03-05

    I was trying to debug this simple function with recursion. Debuging and stepping works, but list variables (xs,ys,zs) are empty (_),

        combinations'  :: Int -> [a] -> [[a]]
        combinations'  0 _  = [ [] ]
        combinations' n xs = [ y:ys | y:zs <- tails xs, ys <- combinations' (n-1) zs]
    

    I suspect it has to do with Haskell being lazy, but is there a way to see the current state of list variables in a breakpoint step (without changing the source, like with trace)?

    Like

        xs = [1,2,3] 
        zs = [2,3] [3]...
    
     
  • JP Moresmau
    JP Moresmau
    2013-03-10

    In the "Variables" view of the "Debug" perspective, in the "Value" column, when you see "_", select the cell and enter a value (like a single space). This will cause a force calculation of the value, that will then appear in the cell.
    Note that forcing values may change behavior of your program in terms of space usage, for example, but is useful for debugging.

     
  • Vlatko Basic
    Vlatko Basic
    2013-03-11

    I tried it and it evaluates all the steps of recursion from that point to the end.
    Seems logical, but not exactly what I expected.
    Thanks for the tip, it helps.