printer :: GMState -> GMState
printer s = newState
    where
        (addr : _) = getStack s
        newState = printer' (hLookup (getHeap s) addr) s
printer :: GMState -> GMState
printer s = newState
    where
        (addr : _) = getStack s
        newState = printer' (hLookup (getHeap s) addr) s
printer s = newState
    where
        (addr : _) = getStack s
        newState = printer' (hLookup (getHeap s) addr) s