The previous "newtype Labeller a = Labeller (Int -> (Int, a))" (the result tuple is reversed within Control.Monad.State) would simply become (untested):

newtype Labeller a = State Int a

newLabel = do { n <- get; put (n + 1); return (Label n) }

runLabeller l = execState l minBound

it must be "evalState" instead of "execState"


_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to