fresh :: NO Int
fresh = do st    <- get
           let n  = counter st
           put    $ st { counter = n + 1 }
           return n 

--------------------------------------------------------------------
fresh :: NO Int
fresh = do st    <- get
           let n  = counter st
           put    $ st { counter = n + 1 }
           return n 

--------------------------------------------------------------------
fresh = do st    <- get
           let n  = counter st
           put    $ st { counter = n + 1 }
           return n 

--------------------------------------------------------------------