pushInt :: Int -> GMState -> GMState
pushInt n state
    = putHeap newHeap state'
    where 
    state' = putStack (addr: getStack state) state
    (newHeap, addr) = hAlloc (getHeap state) (NNum n) 
pushInt :: Int -> GMState -> GMState
pushInt n state
    = putHeap newHeap state'
    where 
    state' = putStack (addr: getStack state) state
    (newHeap, addr) = hAlloc (getHeap state) (NNum n) 
pushInt n state
    = putHeap newHeap state'
    where 
    state' = putStack (addr: getStack state) state
    (newHeap, addr) = hAlloc (getHeap state) (NNum n) 